websphere - 使用 Jython 获取 AppServer 的当前重启策略状态 (nodeRestartState)
问题描述
我想使用 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
解决方案
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'))
推荐阅读
- time-series - 如何用 R 中的自相关参数的预定值拟合 ar(1) 模型?
- .net - 对于带有 WaitAny 的 NULL WaitHandle,我应该使用什么作为合适的占位符?
- c - 使用 Wininet 发送 Discord Webhook
- mongodb - 使用mongo参数化python中的find方法
- c - 无法将字符数组元素转换为 C 中的整数元素
- vue.js - 即使在浏览器上使用 CORS 允许扩展时,CORS 也会被阻止
- c# - 在 asp.net mvc 5 razor 页面中使用 JWT 身份验证
- javascript - 在 three.js 中导入 3D 对象失败
- database - Laravel db 事务半条件
- amazon-web-services - 在 S3 存储桶中镜像 Marketo 数据以进行可视化