You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Jython正确获取WebSphere AppServer的nodeRestartState重启策略

解决WebSphere Jython获取服务器重启策略状态的问题

我来帮你梳理下问题所在,以及正确的实现方式:

问题根源分析

  1. 直接访问monitoringPolicy报错:你最初尝试AdminConfig.showAttribute(server, "monitoringPolicy")失败,是因为monitoringPolicy并不是Server对象的直接属性——它属于processDefinitions这个子配置对象的属性,直接从Server层面访问自然会触发WASX7080E无效属性错误。
  2. 无法通过Python语法访问配置对象:当你拿到processDefinitions的返回值后,它并不是Python的字典或对象,而是WebSphere配置对象的字符串标识(类似[(cells/CnxCell/nodes/CnxNode01/servers/UtilCluster_server1|server.xml#JavaProcessDef_1578492353152)]),所以用pd["monitoringPolicy"]或pd.monitoringPolicy这种Python语法肯定会报错,必须使用WebSphere提供的AdminConfig系列方法来操作这些配置对象。

正确的实现代码

下面是获取nodeRestartState(即你要的重启策略状态)的完整代码:

servers = AdminTask.listServers('[-serverType APPLICATION_SERVER]').splitlines()
for server in servers:
    print(f"当前服务器: {server}")
    # 第一步:从Server对象获取processDefinitions配置对象
    process_def = AdminConfig.showAttribute(server, "processDefinitions")
    # 第二步:从processDefinitions获取monitoringPolicy配置对象
    monitoring_policy = AdminConfig.showAttribute(process_def, "monitoringPolicy")
    # 第三步:从monitoringPolicy中提取nodeRestartState的值
    restart_state = AdminConfig.showAttribute(monitoring_policy, "nodeRestartState")
    print(f"重启策略状态: {restart_state}")
    break  # 仅打印第一个服务器的信息,按需移除

额外说明

  • 如果想确认某个配置对象的所有属性,可以用AdminConfig.showall(配置对象),比如print(AdminConfig.showall(monitoring_policy)),这样就能看到所有可访问的属性及其值。
  • 返回的restart_state值就是你预期的RUNNING、STOPPED或PREVIOUS中的一个。

内容的提问来源于stack exchange,提问作者Lion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 07:47:36