Websphere JYTHON脚本-获取活动规范ID

Websphere JYTHON脚本-获取活动规范ID,websphere,wsadmin,Websphere,Wsadmin,问题: 试图使用下面的JYTHON命令,我无法检索在Websphere节点服务器级别定义的活动规范的id。我相信这是一个语法问题,但我不确定是什么 代码: AdminConfig.getid('/Cell:mycell/Node:mynode/Server:myserver/J2CActivationSpec:myActiveSpecName/') 问题说明: 我没有得到一个无效的对象错误,所以我相信我有正确的语法,但它就是找不到资源,即使它存在 我使用AdminConfig.getid()

问题: 试图使用下面的JYTHON命令,我无法检索在Websphere节点服务器级别定义的活动规范的id。我相信这是一个语法问题,但我不确定是什么

代码:

AdminConfig.getid('/Cell:mycell/Node:mynode/Server:myserver/J2CActivationSpec:myActiveSpecName/')
问题说明:

  • 我没有得到一个无效的对象错误,所以我相信我有正确的语法,但它就是找不到资源,即使它存在
  • 我使用AdminConfig.getid()检查资源是否已经存在,以便进行修改或创建
  • 如果我使用以下代码:AdminConfig.getid('/J2CActivationSpec:myActiveSpecName/'),它将找到它,但如果我使用上面列出的更具体的路径,则不会找到它
参考资料:


遏制路径总是有点棘手。根据我(有限的)经验,即使您可以通过AdminConfig.parents跟踪路径,也可能无法始终使用getid

您是否仅限于使用getid?如果没有,以下是一些备选方案,它们将在/Cell/Node/Server级别为您提供一个ActivationSpec:

使用AdminConfig.list进行查询 这种方法将列出指定范围内的激活规范(在本例中为服务器),并获取其name属性等于“myActiveSpecName”的规范

server = AdminConfig.getid('/Cell:mycell/Node:mynode/Server:myserver')
activationSpec = ''

for as in AdminConfig.list('J2CActivationSpec', server).splitlines():
    if AdminConfig.showAttribute(as, 'name') == 'myActiveSpecName'
        activationSpec = as
        print 'found it :)'
使用通配符 这种方法也使用AdminConfig.list,但有一种模式可以缩小列表的范围。如果知道激活规范的配置以myActiveSpecName开头,则可以执行以下操作:

activationSpec = AdminConfig.list('J2CActivationSpec', 'myActiveSpecName*')

您是否检查过它是否真的绑定到服务器名称空间中?是的,我在部署管理器的最低级别(节点服务器级别)创建了活动规范。当我创建活动规范时,我定义的范围是“cells/mycell/nodes/mynode/servers/myserver”。就在昨天,我学会了这个小把戏,今天如果有机会使用AdminConfig.list('ThreadPool','WMQCommonServices(cells/mycell/nodes/servers/myserver*),我将尝试一下返回我的服务器上的线程池id。我认为这对于活动规范应该是一样的,因为在节点服务器级别只有1个线程池。