2011-06-16 92 views
3

請找到下面的代碼WebSphere服務器未處於運行狀態:Jython WebSphere腳本?

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論壇上貼出下面

https://www.ibm.com/developerworks/forums/thread.jspa?threadID=374216

+1

節點和進程名稱是否正確? queryNames(「type = Server,*」)返回的是什麼?你正在運行基地或ND? – 2011-06-16 22:16:48

+0

@bkail我是一個Python新手,我認爲我們沒有節點代理,因此它作爲獨立的服務器。我也知道,如果沒有節點代理,我們不能通過jython腳本啓動或停止。但是我的功能理解是Wy服務器顯示爲不運行,即使everythngs正確。 – crackerplace 2011-06-20 06:22:08

+0

我能夠啓動應用程序。唯一正在運行的服務器是hsown,它是默認的server1。 – crackerplace 2011-06-20 07:07:59

回答

1

bkail更多的信息在正確的軌道上。你需要確保你的搜索字符串是正確的。使用:

print AdminControl.queryNames('type=Server,*') 

在交互式wsadmin.sh會話中列出您單元中所有正在運行的服務器。然後使用:

'type=Server,name=JVM_NAME,*' 

爲您的搜索字符串。 JVM_NAME由您剛剛運行的queryNames的輸出確定。

此外,我會避免AdminControl.completeObjectName。我不知道的含義,但是從DOC這個片段讓我覺得它可能不會做你認爲它的作用:

使用completeObjectName命令 創建 完整的ObjectName的字符串表示基於片段的值爲 。 這個命令確實與不通信,服務器到 找到一個匹配的ObjectName值。如果 系統找到幾個MBean, 匹配該片段,命令 返回第一個。

下面是IBM如何做它在WAS_ROOT/scriptLibraries /服務器/ V70/AdminServerManagement.py(線814-815):

runningServer = AdminControl.queryNames("type=Server,node="+nodeName+",name="+serverName+",*") 
if (len(runningServer) > 0 and AdminControl.getAttribute(runningServer, "state") == "STARTED"): 
    ... 

以我的經驗,AdminControl.queryNames只會返回運行服務器。因此,根據您的需要,只需檢查len(runningServer)的返回值就足夠了。此外,在真正的IBM時尚中,文檔中沒有列出AdminControl.getAttribute(runningServer,「state」)的可能返回值。我只能找到對'STARTED'的引用。

+0

STOPPING可能是唯一的其他有用的狀態(可能不是直接查詢,但如果註冊爲通知偵聽器,您可以接收它)。 – 2011-06-18 13:31:36

+0

@ che2cbs請發現我在這裏發佈的問題https://www.ibm.com/developerworks/forums/thread.jspa?threadID=374216你會理解整個問題..... – crackerplace 2011-06-20 07:23:40

+0

@whokares:我是不知道我理解整個問題。您的代碼在我的設置中正常工作。按照bkail的建議並驗證對象字符串。 – che2cbs 2011-06-20 14:14:47

相關問題