JMXローカルアクセスが有効になっている特権(ルートとして実行中)アプリケーションを監視する非特権(非ルートアクセス)JMXクライアントプログラムを作成したいとします。-Dcom.sun.management.jmxremote。JMXローカル監視へのアクセス制御
少なくともMacOSXでは、jconsole(およびjps)は自分自身として実行するとルートプロセスを表示しません。
これは実際のところここにあるのでしょうか、これを設定する方法はありますか?
JMXローカルアクセスが有効になっている特権(ルートとして実行中)アプリケーションを監視する非特権(非ルートアクセス)JMXクライアントプログラムを作成したいとします。-Dcom.sun.management.jmxremote。JMXローカル監視へのアクセス制御
少なくともMacOSXでは、jconsole(およびjps)は自分自身として実行するとルートプロセスを表示しません。
これは実際のところここにあるのでしょうか、これを設定する方法はありますか?
クライアントがルートプロセスの表示を許可されていない場合は、PIDで接続することはできません。必要なのは、ルートアプリケーションが[> 1024]ポートで待機するJMXServerをロードしてから、PIDでなくポート経由で接続できるようにすることです。これを行う最も簡単な方法は、JVMがJMXサーバーを自動的にロードするようにトリガーする複数のシステムプロパティを指定することです。例えば(これらはすべて、最も安全ではありません):
JMX Management and Monitoring Propertiesを参照してください。
プログラムでJMXServerを作成するには、JavaDocのjavax.management.remoteを参照してください。このトピックに関する実際的なガイド/チュートリアルは、hereです。
JMXは、いくつかのコマンドラインオプションで定義できる単純なTCPポートを使用します。ポートが開いている場合は、誰でも(権限を持たないユーザも含めて)誰でもそのポートを見ることができます。
プロセス自体については、jpsは他のユーザーのプロセスを見ることはできませんが、「ps aux」と表示されます。
ああ、お願いします.Dの代わりに手動でJMXサーバーを起動する方法を教えてください。そして、そのようなサーバーはVM Beansのビルドを公開するでしょうか? – bmargulies
回答を更新しています。そして、これで、組み込みのVM MXBeanへのアクセスが可能になります。 – Nicholas