如何通过Jython正确获取WebSphere AppServer的nodeRestartState重启策略
解决WebSphere Jython获取服务器重启策略状态的问题
我来帮你梳理下问题所在,以及正确的实现方式:
问题根源分析
- 直接访问
monitoringPolicy报错:你最初尝试AdminConfig.showAttribute(server, "monitoringPolicy")失败,是因为monitoringPolicy并不是Server对象的直接属性——它属于processDefinitions这个子配置对象的属性,直接从Server层面访问自然会触发WASX7080E无效属性错误。 - 无法通过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
相关产品推荐
相关产品推荐

