2012-03-28 83 views
1

夥計,如何從WebSphere 7.0的wsadmin控制檯獲取當前應用程序狀態

如何獲取部署在websphere上的應用程序的當前狀態(如啓動/停止)?我知道,我可以使用AdminControl.completeObjectName('type=Application,name=myApplication,*') 但是如果我剛剛調用啓動,很可能以下命令將不會返回任何內容,因爲應用程序尚未處於運行狀態。同樣,當我剛剛調用停止時,我想要顯示該應用程序實際已停止,以便在應用程序仍在運行時不會更改任何內容。任何想法我可以做到這一點?謝謝。

+0

這不是一個重複的問題嗎? http://stackoverflow.com/questions/8185866/how-do-i-determine-if-an-application-is-running-using-wsadmin-jython-script – Manglu 2012-03-28 22:43:17

+0

不,它是不一樣的。我需要立即的狀態。有了這個解決方案,我無法獲得狀態「部分運行」。 – RomanB 2012-04-09 17:54:12

回答

0

您可以嘗試這樣做。這是一個工作,但它是可能的。

  1. 使用應用程序名稱獲取部署目標。由於您提到了多個節點,我猜測部署目標將成爲一個集羣。
  2. 使用羣集查找羣集的成員,這將是服務器。
  3. 使用服務器名稱檢查每臺服務器的狀態。

如果該羣集的所有服務器都已啓動,則會啓動該應用程序。如果該羣集的所有服務器都停止,則應用程序停止。如果一些已經啓動並且一些已經停止,那麼應用程序部分啓動。

希望有所幫助。

+0

謝謝,這是我最終做的! – RomanB 2012-04-28 17:16:55

0

至於我,我得到應用現狀在WebSphere 6.1是這樣的:

#-------------------------------------------------------------- 
# get app object name 
#-------------------------------------------------------------- 

appObjectNames = AdminControl.queryNames('type=Application,cell=' + cellName + 
    ',node=' + nodeName + ',process=' + serverName + ',name=' + appName + ',*') 

lineSeparator = java.lang.System.getProperty('line.separator') 
appObjectName = appObjectNames.split(lineSeparator)[0] 
appObjectName = appObjectName.strip() 

#-------------------------------------------------------------- 
# get application status 
#-------------------------------------------------------------- 

if len(appObjectName) == 0: 
    tprint(prefix + 'application ' + appName + ' is stopped') 
else:   
    tprint(prefix + 'application ' + appName + ' is started') 

我想這應該在WebSphere 7.0正常工作。

+0

它不適用於集羣環境(您有多個節點)。當我部署到dmanager並稱爲「startApplicationOnCluster」時,需要一段時間才能在所有節點上啓動應用程序。我需要確保應用程序在所有節點上運行。 – RomanB 2012-04-09 18:00:17

相關問題