2014-10-29 63 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