2014-10-29 39 views
1

如何迭代激活规范的自定义属性?实际上我想获得“WAS_EndpointInitialState”的值。websphere Jython脚本:查询激活规范的自定义属性

asList = AdminConfig.list('J2CActivationSpec').splitlines() 
for as in asList: 
    asName = AdminConfig.showAttribute(as, 'name') 
    # beyond this point it does not work 
    propSet = AdminConfig.showAttribute(as, 'resourceProperties') 
    propList = AdminConfig.list('J2EEResourceProperty', propSet).splitlines() 
    for prop in propList: 
     print 'name = ' + AdminConfig.showAttribute(prop, 'name') 
     print 'value = ' + AdminConfig.showAttribute(prop, 'value') 

回答

2

resourceProperties属性是一个空格分隔的字符串,由方括号包围。下面的脚本应该为你工作:

asList = AdminConfig.list('J2CActivationSpec').splitlines() 
for as in asList: 
    asName = AdminConfig.showAttribute(as, 'name') 
    propList = AdminConfig.showAttribute(as, 'resourceProperties')[1:-1].split() 
    for prop in propList : 
     print 'name = ' + AdminConfig.showAttribute(prop, 'name') 
     print 'value = ' + AdminConfig.showAttribute(prop, 'value') 

它可能打破,虽然如果属性名称在他们的对象ID任何空格。

您可以使用正则表达式处理所有边缘案例,或尝试使用WDR库(http://wdr.github.io/WDR/https://github.com/WDR/WDR),它已经这样做了。另外,它使您的脚本更具可读性和可维护性。

,带宽动态脚本应该是这样的:

asList = listConfigObjects('J2CActivationSpec') 
for as in asList: 
    asName = as.name 
    propList = as.resourceProperties 
    for prop in propList : 
     print 'name = ' + prop.name 
     print 'value = ' + prop.value