2012-01-12 20 views
9

サードパーティのJavaプロセス/ JVMに設定されているシステムプロパティを取得したいと考えています。私はプログラムでこれを行う必要があります。たとえば、 "java.class.path"プロパティを取得します。これどうやってするの?特定のJVMインスタンスのシステムプロパティをプログラムで取得するにはどうすればよいですか?

私は、System.getProperty()を使用して記述したJavaプログラムのプロパティを取得できることがわかりました。しかし、サードパーティのJVMのシステムプロパティを取得する必要があります。どのように私は同じを得ることができますか?

+1

サードパーティのJVMはどういう意味ですか?コードを実行できないJVMを参照していますか? – adarshr

+0

サードパーティのJVMで実行されているプログラムに情報を問い合わせてください –

+0

はい、そうです。そのJVMでJavaコードを実行できません。あるいは、特定のJVMに接続してJavaコードを実行することは可能ですか? – user1131528

答えて

15

サードパーティのJVMでは、別のJVMを意味する場合は、jinfoを試してください。これはすべてのJVM実装では機能しませんが、おそらくそれか類似していると思われます。 jinfoは、引数としてプロセスIDをとります(またはリモートシステム、man jinfoを参照)。プロセスIDを確認するには、jpsまたはjps -vを使用してください。 programeticallyリモートJVM統計(JVMシステムパラメータ、スレッドstatististics、Memomy情報、GC情報及びその他の情報)にアクセスする

 
jinfo 74949 
Attaching to process ID 74949, please wait... 
Debugger attached successfully. 
Server compiler detected. 
JVM version is 20.4-b02-402 
Java System Properties: 

java.runtime.name = Java(TM) SE Runtime Environment 
sun.boot.library.path = /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Libraries 
java.vm.version = 20.4-b02-402 
awt.nativeDoubleBuffering = true 
... 
+0

ありがとうRoger !!!それは私が探している出力でしょう:) しかし、jinfo コマンドはJVM実装では実行されません。特定のフラグを要求し、期待どおりにすべてのJava System Propertiesをダンプしません。私はWindowsのボックスでJava 1.6.0.29実装を使用しています。別の方法がありますか? – user1131528

+0

ドキュメントは、Windows上で同じように動作するはずであることを示しています。 jinfo -flags またはjinfo -sysprops を試しましたか? –

+0

は、私はそれが私:(に戻って、このメッセージをスローし、悲しいことに、両方のoptions..Butを試してみました 使用法: Jinfoの

0

JMXを使用することができます。そのため、リモートJVMはJMX接続(Check this on how to activate JMX in remote JVM)を許可する必要があります。 JMXポートに接続し、アプリケーションからリモートサーバから別のMbeanの情報を取得し、上記の設定が完了したら

-Dcom.sun.management.jmxremote.port=1234 
-Dcom.sun.management.jmxremote.authenticate=false 
-Dcom.sun.management.jmxremote.ssl=false 
-Djava.rmi.server.hostname=127.0.0.1 

:基本的には次の-Dパラメータが適切な値を使用してリモートJVMに設定する必要があります。いくつかのサンプルコードを以下に示します。

JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://" + HOST + ":" + PORT + "/jmxrmi"); 
JMXConnector jmxConnector = JMXConnectorFactory.connect(url); 
MBeanServerConnection mbeanServerConnection = jmxConnector.getMBeanServerConnection(); 

このmbeanServerConnectionを使用すると、別の管理対象Beanにアクセスし、MX豆から必要な情報を得ることができます。システムプロパティーの場合は、RuntimeMXBean Beanを取得し、すべてのシステムパラメーターを取得するためにgetSystemProperties()を呼び出す必要があります。

関連する問題