0

websphere から基本的な PMI データを取得するための非常に単純な jython スクリプトを作成しようとしています。フリーヒープなどのJVMデータの取得は簡単です(そして機能します)

perfName = AdminControl.completeObjectName ('type=Perf,process=PTEIRMW_APPSERVER801,*')
perfOName = AdminControl.makeObjectName (perfName)
jvmName = AdminControl.completeObjectName ('type=JVM,process=PTEIRMW_APPSERVER801,*')
params = [AdminControl.makeObjectName (jvmName), java.lang.Boolean ('false')]
sigs = ['javax.management.ObjectName', 'java.lang.Boolean']
AdminControl.invoke_jmx (perfOName, 'getStatsObject', params, sigs)

しかし、その後、WebContainer スレッドプールに対して同様のことを試みましたが、失敗しました

threadPoolName = AdminControl.completeObjectName('name=WebContainer,type=ThreadPool,process=PTEIRMW_APPSERVER801,*')
threadPoolOName = AdminControl.makeObjectName (threadPoolName)
params = [AdminControl.makeObjectName (threadPoolName), java.lang.Boolean ('false')]
sigs = ['javax.management.ObjectName', 'java.lang.Boolean']
AdminControl.invoke_jmx (threadPoolOName, 'getStatsObject', params, sigs)

エラーは

WASX7015E: コマンドの実行中に例外が発生しました: "AdminControl.invoke_jmx (threadPoolOName, 'getStatsObject', params, sigs)"; 例外情報: javax.management.MBeanException javax.management.ServiceNotFoundException: 操作 getStatsObject が ModelMBeanInfo にありません

何か案は?私は特にWebContainerスレッドプールのみが必要です(できればアクティブなスレッドのみが必要ですが、後でそれを除外できます)

4

2 に答える 2

0

答えは次のようになります (クリーンアップされ、より一般的なバージョン)。

#Get the AppServer from parameter
appServer = sys.argv[0]

perfName = AdminControl.completeObjectName ('type=Perf,process='+appServer+',*')
perfOName = AdminControl.makeObjectName (perfName)
sigs = ['javax.management.ObjectName', 'java.lang.Boolean']

# Getting the JVM Data
jvmName = AdminControl.completeObjectName ('type=JVM,process='+appServer+',*')
params = [AdminControl.makeObjectName (jvmName), java.lang.Boolean ('false')]
print AdminControl.invoke_jmx (perfOName, 'getStatsObject', params, sigs)

# Getting the threadpool data

threadPoolName = AdminControl.completeObjectName('name=WebContainer,type=ThreadPool,process='+appServer+',*')
params = [AdminControl.makeObjectName (threadPoolName), java.lang.Boolean ('false')]
print AdminControl.invoke_jmx (perfOName, 'getStatsObject', params, sigs)

しかし、@Martin Plonkasの回答もテストしましたが、それも機能します

于 2013-10-01T09:57:51.120 に答える