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

使用WSADMIN运行Jython脚本报错:无法创建ObjectName

解决WebSphere Jython脚本重启服务器的错误问题

首先看你遇到的错误 WASX7025E: Error found in String "WebSphere:W"; cannot create ObjectName.,根源是你对AdminControl.queryNames()的返回值处理出错了——这个方法返回的是空格分隔的字符串,不是列表。你直接把它当成列表用ManagedProcessList[i]去取元素,实际上取到的是字符串里的单个字符(比如第一个字符是"W"),后续处理自然会报错无法创建ObjectName。

先看你执行AdminControl.queryNames('WebSphere:type=Server,*')的输出,它是一个完整的字符串:

WebSphere:name=server1,process=server1,platform=proxy,node=WC_node,j2eeType=J2EEServer,version=7.0.0.41,type=Server,mbeanIdentifier=cells/WC_cell/nodes/WC_node/servers/server1/server.xml#Server_1183144161046,cell=WC_cell,spec=1.0,processType=UnManagedProcess

另外原代码还有缩进不规范的问题,Jython对缩进要求严格,这也是潜在的语法隐患。下面是修复后的完整脚本:

# 获取所有Server类型的MBean,将返回的空格分隔字符串分割为列表
managed_process_list = AdminControl.queryNames('WebSphere:type=Server,*').split()

for process in managed_process_list:
    # 获取服务器运行状态
    server_status = AdminControl.getAttribute(process, 'state')
    # 解析服务器名称和节点名称(通过属性前缀筛选,避免依赖固定索引)
    name_parts = process.split(',')
    server_name = [part.split('=')[1] for part in name_parts if part.startswith('name=')][0]
    node_name = [part.split('=')[1] for part in name_parts if part.startswith('node=')][0]
    
    if server_status == "STARTED":
        if node_name == "WC_node" and server_name == "server1":
            print "restarting", server_name, "on", node_name, "because it is currently", server_status
            AdminControl.stopServer(server_name, node_name)
            # 可选:添加等待时间,确保服务器完全停止后再启动
            # import time
            # time.sleep(30)
            AdminControl.startServer(server_name, node_name)
        else:
            print "Not restarting", server_name, "on", node_name, "because it is currently", server_status
    else:
        print "Not restarting", server_name, "on", node_name, "because it is currently", server_status

关键修改说明:

  • 用.split()将queryNames的返回值转换为真正的服务器MBean列表,确保每个元素是完整的ObjectName字符串
  • 改用属性前缀筛选的方式解析服务器名和节点名,避免原代码依赖固定索引的脆弱性(如果MBean属性顺序变化会直接出错)
  • 修正了代码缩进,符合Jython的语法要求
  • 增加了可选的等待停止代码,避免服务器未完全停止就启动导致的异常

现在再执行脚本应该就能正常识别服务器并执行重启操作了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:18:05