使用 Jython 获取 AppServer 的当前重启策略状态(nodeRestartState)
Get current restart policy state (nodeRestartState) of AppServer using Jython
我想使用 Jython 获取 AppServer(运行、STOPPED 或 PREVIOUS)的当前重启策略。
servers = AdminTask.listServers('[-serverType APPLICATION_SERVER]').splitlines()
for server in servers:
print server
print AdminConfig.showAttribute(server, "monitoringPolicy")
break
这给了我一个属性无效的异常:
An exception occurred when executing the file "test.py". Information
about the exception: com.ibm.ws.scripting.ScriptingException:
WASX7080E: Invalid attributes for type "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
MonitoringPolicy 有自己的类型。这将打印服务器和状态,因此 'RUNNING'、'STOPPED'
servers = AdminTask.listServers('[-serverType APPLICATION_SERVER]').splitlines()
for server in servers:
print(server)
mpol = AdminConfig.list("MonitoringPolicy", server)
print(AdminConfig.showAttribute(mpol, 'nodeRestartState'))
我想使用 Jython 获取 AppServer(运行、STOPPED 或 PREVIOUS)的当前重启策略。
servers = AdminTask.listServers('[-serverType APPLICATION_SERVER]').splitlines()
for server in servers:
print server
print AdminConfig.showAttribute(server, "monitoringPolicy")
break
这给了我一个属性无效的异常:
An exception occurred when executing the file "test.py". Information about the exception: com.ibm.ws.scripting.ScriptingException: WASX7080E: Invalid attributes for type "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
MonitoringPolicy 有自己的类型。这将打印服务器和状态,因此 'RUNNING'、'STOPPED'
servers = AdminTask.listServers('[-serverType APPLICATION_SERVER]').splitlines()
for server in servers:
print(server)
mpol = AdminConfig.list("MonitoringPolicy", server)
print(AdminConfig.showAttribute(mpol, 'nodeRestartState'))