Websphere jython获取正确的配置id

Websphere jython获取正确的配置id,websphere,jython,Websphere,Jython,我需要找到获取特定配置对象的对象id的方法,但我似乎无法获得我想要的结果 考虑以下代码: wsadmin>print AdminConfig.list('SessionManager') (cells/labwas11Node01Cell/applications/isclite.ear/deployments/isclite|deployment.xml#SessionManager_1162483845425) (cells/labwas11Node01Cell/nodes/labwa

我需要找到获取特定配置对象的对象id的方法,但我似乎无法获得我想要的结果

考虑以下代码:

wsadmin>print AdminConfig.list('SessionManager')
(cells/labwas11Node01Cell/applications/isclite.ear/deployments/isclite|deployment.xml#SessionManager_1162483845425)
(cells/labwas11Node01Cell/nodes/labwas11/servers/server1|server.xml#SessionManager_1183122130078)
有没有办法用狡猾的AdminConfig.getid只获取第二行

我刚刚读了一篇关于对象名和包含路径的好文章,这有助于理解我的问题,但没有提供解决方案

我已经找到了一个方法来获取我的信息,但我相信有一个更好的方法。。。如果有人能帮忙,那就太好了

因此,我需要服务器的会话管理器,但我有另一个为应用程序定义的会话管理器

所以AdminConfig.list不够好

我能做的是,我想要的会话管理器有一个反映其上下文的属性。 (为了清晰起见,我删除了一些行)

上下文对象是此会话管理器应用的WebContainer

因此,我应该能够比较这两者,并找到我想要的会话管理器

SesMgrList = AdminConfig.list('SessionManager').splitlines()
for SesMgr in SesMgrList:
    if AdminConfig.showAttribute( SesMgr, 'context') == AdminConfig.list('WebContainer'):
        Modify my session manager custom properties

但这一点都不优雅。。。任何人都有更好的方法吗?

仅使用包含路径很难获得某些WebSphere对象。在您的特定情况下,最好从
Server
对象开始,找到
WebContainer
,然后找到它的
SessionManager
。到达后,您将能够修改会话管理设置:

server=AdminConfig.getid('/Cell:labwas1node01cell/Node:labwas11/server:server1/'))
webContainer=AdminConfig.list('webContainer',服务器)
sessionManager=AdminConfig.list('sessionManager',webContainer)
tuningParams=AdminConfig.showAttribute(会话管理器'tuningParams')
打印AdminConfig.showAttribute(tuningParams,“maxInMemorySessionCount”)
modify(tuningParams,['maxInMemorySessionCount','1234']]
打印AdminConfig.showAttribute(tuningParams,“maxInMemorySessionCount”)
#AdminConfig.save()#未注释时-将保存更改
您还可以查看位于(及其文档位于)的WDR库,它使脚本更具可读性和可维护性:

server=getid1('/Cell:labwas11Node01Cell/Node:labwas11/server:server1/'))
webContainer=server.listConfigObjects('webContainer')[0]
sessionManager=webContainer.listConfigObjects('sessionManager')[0]
tuningParams=sessionManager.tuningParams
打印tuningParams.maxInMemorySessionCount
tuningParams.maxInMemorySessionCount=1234
#由于在WDR中具有类型识别功能,因此您甚至可以执行以下操作:
tuningParams.maxInMemorySessionCount+=10
打印tuningParams.maxInMemorySessionCount
#save();sync()#未注释时-将保存并同步更改

由于我目前正在实施一组自动化WebSphere部署的脚本,我倾向于以尽可能系统化的方式导航配置。 在这种情况下,我希望通过包含路径检索Web容器和会话管理器。 与Marcin的方法相比,我更喜欢这种方法的原因是,它只需一次调用即可检索到我想要的元素

这就是我发现有效的方法:

AdminConfig.getid('/Cell:/Node:/Server:/ApplicationServer:/WebContainer:/SessionManager://')

当然,您可以添加节点和服务器的名称来查找您要查找的特定元素

SesMgrList = AdminConfig.list('SessionManager').splitlines()
for SesMgr in SesMgrList:
    if AdminConfig.showAttribute( SesMgr, 'context') == AdminConfig.list('WebContainer'):
        Modify my session manager custom properties