【问题标题】:Get current restart policy state (nodeRestartState) of AppServer using Jython使用 Jython 获取 AppServer 的当前重启策略状态 (nodeRestartState)
【发布时间】: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

【问题讨论】:

    标签: websphere jython


    【解决方案1】:

    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'))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-11
      • 1970-01-01
      • 2014-07-17
      • 2012-07-13
      相关资源
      最近更新 更多