【发布时间】:2020-04-27 05:44:11
【问题描述】:
我想使用 Jython 获取 AppServer 的当前重启策略(RUNNING、STOPPED 或 PREVIOUS)。
servers = AdminTask.listServers('[-serverType APPLICATION_SERVER]').splitlines()
for server in servers:
print server
print AdminConfig.showAttribute(server, "monitoringPolicy")
break
这给了我一个属性无效的异常:
执行文件“test.py”时发生异常。信息 关于异常:com.ibm.ws.scripting.ScriptingException: WASX7080E: 类型“Server”的无效属性 -- “monitoringPolicy”。
但我可以使用print AdminConfig.showall(server) 获取属性:
...
[monitoringPolicy [[autoRestart true]
[maximumStartupAttempts 3]
[nodeRestartState STOPPED]
[pingInterval 60]
[pingTimeout 300]]]
...
对我来说,monitoringPolicy 似乎是数组的键,因此应该可以通过
policy = AdminConfig.showAttribute(server, "monitoringPolicy")
restartState = policy["restartState"] # Should be "STOPPED"
问题出在哪里?
编辑
在深入查看列表输出后,我发现我错过了一个顶级属性processDefinitions,它是monitoringPolicy 的父级。
pd = AdminConfig.showAttribute(server, "processDefinitions")
print pd
打印出来:
[(cells/CnxCell/nodes/CnxNode01/servers/UtilCluster_server1|server.xml#JavaProcessDef_1578492353152)]
但我无法从此对象获取任何子属性:
# TypeError: sequence subscript must be integer or slice
print pd["monitoringPolicy"]
# AttributeError: 'string' object has no attribute 'monitoringPolicy'
print pd.monitoringPolicy
【问题讨论】: