wsadmin - jmsprovider 毫无例外地创建重复资源

wsadmin - jmsprovider 毫无例外地创建重复资源

我正在尝试使用 wsadmin 创建 jmsprovider 资源,如下图所示,在 WAS ND 8.5.5.9 安装版本中

  1. 将范围设置为 TestDmgrNode

wsadmin>AdminConfig.getid('/Node:TestDmgrNode/') 'TestDmgrNode(cells/TestCell/nodes/TestDmgrNode|node.xml#Node_1)'

  1. 在上述范围内添加 JMSProvider

wsadmin>AdminConfig.create('JMSProvider', node, [['name', 'TestProvider1'], ['description', 'TestProvider1'], ['classpath', '/var/tmp/test.jar'], ['externalInitialContextFactory', 'testICF'], ['externalProviderURL', 'testexternalurl']]) 'TestProvider1(cells/TestCell/nodes/TestDmgrNode|resources.xml#JMSProvider_1517482261206)' wsadmin>AdminConfig.save()

有一次,我保存了配置,我能够在 JMS 提供程序部分下看到资源,现在我尝试再次运行相同的命令,它再次保存相同的资源而不会抛出任何异常,即具有“名称”的资源已存在。

wsadmin>AdminConfig.create('JMSProvider', node, [['name', 'TestProvider1'], ['description', 'TestProvider1'], ['classpath', '/var/tmp/test.jar'], ['externalInitialContextFactory', 'testICF'], ['externalProviderURL', 'testexternalurl']])
'TestProvider1(cells/TestCell/nodes/TestDmgrNode|resources.xml#JMSProvider_1517482261206)'

wsadmin>AdminConfig.save()

有人能指导一下它是否与安装版本中的任何错误有关

注意 - 当我尝试使用管理控制台再次添加相同的资源时,它会引发错误。

请提出建议 谢谢 Sudhir

答案1

是的,我能够重现您所描述的情况,并且由于 wsadmin 和管理控制台之间的行为不一致,应将其报告为错误。作为一个简单的解决方法,在创建 JMSProvider 之前,检查是否存在与新 JMSProvider 同名的 JMSProvider,并且该 JMSProvider 与您创建新 JMSProvider 的同一范围相同。例如:

def jmsProviderExists(scope, jmspName):
    #print 'JMSProviders' + AdminConfig.list('JMSProvider',scope)
    jps = AdminConfig.list('JMSProvider',scope).splitlines()
    #print jps
    for jp in jps:
        #print jp
        name = AdminConfig.showAttribute(jp, 'name')
        if name == jmspName:
            return True
        continue
    return False

node = AdminConfig.getid('/Node:DefaultNode01/')
#print 'Node:' + node
intendedName='TestProvider1'
if jmsProviderExists(node, intendedName):
    print 'JMSProvider with name already exists'
else:
    print 'Create JMSProvider'

相关内容