Deployment WebSphere Server未处于运行状态:Jython WebSphere脚本?

Deployment WebSphere Server未处于运行状态:Jython WebSphere脚本?,deployment,scripting,websphere,jython,wsadmin,Deployment,Scripting,Websphere,Jython,Wsadmin,请查找下面的代码 runningServer1 = AdminControl.completeObjectName("type=Server,node=nodename,process=processname,*") print "server running --->",runningServer1 if len(runningServer1) == 0: print "Error: Server not running...",process_name 结果是 “错误:服务

请查找下面的代码

runningServer1 = AdminControl.completeObjectName("type=Server,node=nodename,process=processname,*")
print "server running --->",runningServer1
if len(runningServer1) == 0:

    print "Error: Server not running...",process_name
结果是

“错误:服务器未运行…”

虽然我的服务器正在运行,但我能够启动应用程序。 而且runningServer1变量也没有打印出来,为什么我无法为服务器获取对象

关于我的问题的更多信息,我在下面的IBM论坛中发布


b邮件在正确的轨道上。您需要确保您的搜索字符串是正确的。使用:

print AdminControl.queryNames('type=Server,*')
在交互式wsadmin.sh会话中,列出单元中所有正在运行的服务器。然后使用:

'type=Server,name=JVM_NAME,*'
用于搜索字符串。其中,JVM_名称是根据刚才运行的queryNames的输出确定的

另外,我要避免使用AdminControl.completeObjectName。我不确定这其中的含义,但这段来自文档的片段让我认为它可能不会像你认为的那样:

使用completeObjectName命令 创建字符串的字符串表示形式 完成ObjectName值,该值为 基于一个片段此命令不起作用 不与服务器通信以 查找匹配的ObjectName值。如果 系统会发现几个MBean 匹配片段,命令 返回第一个

以下是IBM在WAS_ROOT/scriptLibraries/servers/V70/AdminServerManagement.py(第814-815行)中的实现方式:


根据我的经验,AdminControl.queryNames将只返回正在运行的服务器。因此,根据您的需要,只需检查len(runningServer)的返回值就足够了。此外,在真正的IBM方式中,文档中没有列出AdminControl.getAttribute(runningServer,“state”)的可能返回值。我只能找到对“已启动”的引用。

节点和进程名称正确吗?queryNames(“type=Server,*”)返回什么?你在运行base还是ND?@bkail我是python的新手,我认为我们没有节点代理,因此它是独立的服务器。此外,我知道,如果没有节点代理,我们无法通过jython脚本启动或停止。但我无法理解的是,Wy服务器显示为不运行,即使一切正常。我能够启动应用程序。作为hsown运行的唯一服务器是server1,这是默认服务器。停止可能是唯一其他有用的状态(可能不直接查询,但如果注册为通知侦听器,您可以接收到它)@che2cbs请找到我在这里发布的问题,你会理解整个问题的。@whokares:我不确定我是否理解整个问题。您的代码在我的设置中运行良好。按照bkail的建议,验证对象字符串。@che2cbs..关键是相同的代码在我的系统tooo中工作正常。。输出是正在运行的服务器是server1。但在我的框中,我们甚至为我们的应用程序配置了其他jvm,它们没有任何节点代理。我们使用命令./startServer.sh servername来启动相应的jvm。这些服务器没有列为正在运行。我不知道为什么。可能与配置我认为我们的是was6服务器的基本配置…@che2cbs当我执行queryName(type='server')时,输出的只是server1。。。哪个是默认的独立服务器
runningServer = AdminControl.queryNames("type=Server,node="+nodeName+",name="+serverName+",*")
if (len(runningServer) > 0 and AdminControl.getAttribute(runningServer, "state") == "STARTED"):
    ...