3

以下のコードを見つけてください

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

4

1 に答える 1

1

bkail は正しい軌道に乗っています。検索文字列が正しいことを確認する必要があります。使用する:

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

対話型の wsadmin.sh セッションで、セル内で実行中のすべてのサーバーをリストします。次に使用します。

'type=Server,name=JVM_NAME,*'

あなたの検索文字列のために。JVM_NAME は、実行した queryNames からの出力から決定されます。

また、AdminControl.completeObjectName は避けたいと思います。その意味はわかりませんが、ドキュメントからのこのスニペットは、あなたが思っていることをしないかもしれないと私に思わせます:

フラグメントに基づく完全な ObjectName 値の文字列表現を作成するには、completeObjectName コマンドを使用します。このコマンドは、一致する ObjectName 値を見つけるためにサーバーと通信しません。フラグメントに一致する MBean が複数見つかった場合、コマンドは最初の MBean を返します。

IBM が WAS_ROOT/scriptLibraries/servers/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」への参照しか見つかりませんでした。

于 2011-06-17T20:30:52.167 に答える