2016-08-01 39 views
1

Beim Versuch, den Anwendungsstatus in WebSphere Application Server abzurufen, erwarte ich, dass mehrere zurückgegebene mBeans zurückgegeben werden. WAS gibt jedoch nur das erste Ergebnis zurück und verwirft den Rest.IBM WebSphere Application Server wsadmin gibt nur das erste Ergebnis von 6 im Skript zurück

[[email protected] ~]$ Run_wsadmin.sh -f wsadmin_Check_App_Status.py 
WASX7209I: Connected to process "dmgr" on node PRDDMGR using SOAP connector; The type of process is: DeploymentManager 
WASX7026W: String "type=Application,name=AMTApp,*" corresponds to 6 different MBeans; returning first one. 

Das Skript Ich bin wie folgt aussieht laufen:

app_name = AppName 
app_status = AdminControl.completeObjectName('type=Application,name=' + app_name + ',*').split('\n') 

for status in app_status : 
    print(status) 
# end of For status in app_status 

Gibt es eine Einstellung in WebSphere, oder muss ich einige spezielle Bibliothek in mein Skript importieren?

Antwort

3

Gemäß der doc von AdminControl.completeObjectName()

Verwenden Sie den Befehl completeObjectName eine String-Darstellung eines vollständigen ObjektName Wert zu schaffen, der auf einem Fragment basiert. Dieser Befehl kommuniziert nicht mit dem Server, um einen passenden ObjectName-Wert zu finden. Wenn das System mehrere MBeans findet, die mit dem Fragment übereinstimmen, gibt der Befehl den ersten zurück.

Damit verhält sich die Funktion wie erwartet.

Statt:
In dieser Situation, es klingt wie Sie AdminControl.queryNames() verwenden möchten, die für die Rückgabe eine Ergebnisliste erstellt wird, die Ihrer Suchanfrage entsprechen.

Zum Beispiel:

app_name = AppName 
app_status = AdminControl.queryNames('type=Application,name=' + app_name + ',*').split('\n') 

for status in app_status : 
    print(status) 

Quelle: Commands for the AdminControl object using wsadmin scripting