我正在尝试使用 wsadmin 创建 jmsprovider 资源,如下图所示,在 WAS ND 8.5.5.9 安装版本中
- 将范围设置为 TestDmgrNode
wsadmin>AdminConfig.getid('/Node:TestDmgrNode/') 'TestDmgrNode(cells/TestCell/nodes/TestDmgrNode|node.xml#Node_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'