我正在尝试使用wsadmin创建jmsprovider资源,如WASND8.5.5.9安装的版本中所示
wsadmin>AdminConfig.getid('/Node:TestDmgrNode/') 'TestDmgrNode(cells/TestCell/nodes/TestDmgrNode|node.xml#Node_1)'
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()是否有人能指导它在安装的版本中是否有任何相关的错误?
注意-当我再次使用管理控制台添加相同的资源时,它会抛出错误。
请向苏迪尔表示感谢
发布于 2018-02-03 15:48:10
是的,我能够复制您所描述的内容,并且由于wsadmin和Admin控制台之间的行为不一致,所以应该将其报告为bug。作为一个简单的解决方法,在创建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'https://serverfault.com/questions/895160
复制相似问题