WebSphere Application Server の動作状態は Web の管理画面から見えるのだけど、状態確認するだけのためにブラウザぽちぽち操作するの美しくないです。そういう動作状況確認は自動でやりたい。
マニュアル見ると wsadmin というのを使って MBean と通信できるのでそこから操作しろと。Jacl と Jython が使えるよと。正直暗号状態で何ゆってるかわかりません。わかりませんけどもなんか雰囲気でこんな感じのを。
たとえば以下のを file1.py とか名前付けて置いておくとして。
names = AdminControl.queryNames('type=Server,*') names += AdminControl.queryNames('type=J2EEApplication,*') names += AdminControl.queryNames('type=Cluster,*') for oName in names.splitlines() : try: coName = AdminControl.completeObjectName( oName ) state = AdminControl.getAttribute( coName , 'state' ) print oName print state print "" except: pass
これを Jython として wsadmin に渡すと、動作状況を拾ってきて表示してくれるはず。
# /usr/IBM/WebSphere/AppServer/profiles/node01/bin/wsadmin.sh -language jython -f ./file1.py WASX7209I: ノード node01 のプロセス "dmgr" に、SOAP コネクターを使用して接続しました。プロセスのタイプは DeploymentManager です。 WASX7303I: 次のオプションはスクリプト環境に渡され、argv 変数に格納される引数として使用可能になります: "[-language, jython]" WebSphere:name=dmgr,process=dmgr,platform=proxy,node=node01,j2eeType=J2EEServer,version=7.0.0.0,type=Server,mbeanIdentifier=cells/mgrCell01/nodes/cellManager01/servers/dmgr/server.xml#Server_1,cell=mgrCell01,spec=1.0,processType=DeploymentManager STARTED WebSphere:name=nodeagent,process=nodeagent,platform=proxy,node=node01,j2eeType=J2EEServer,version=7.0.0.0,type=Server,mbeanIdentifier=cells/mgrCell01/nodes/node01/servers/nodeagent/server.xml#Server_1305165179256,cell=mgrCell01,spec=1.0,processType=NodeAgent STARTED … … 他にもいろいろ … …
こういうかんじで出てくる。しかしコレ動作速度が正直遅い。WAS側が遅い。ちょっと書き換えては動かしてっていうデバッグがかなり憂鬱。