JMX¶
ネイティブバンドルでのJavaMX¶
問題¶
javapackagerでOSネイティブなバンドル・インストーラーを作成しインストールしたJavaを実行したところ、JConsole等のJMX接続ができませんでした。
アプリケーションのディレクトリ下を調べると、
$ ls runtime/conf logging.properties* net.properties* security/ sound.properties*
となっており、一方JRE(JDK)のディレクトリ下を調べると
$ ls conf logging.properties* management/ net.properties* security/ sound.properties*
となっています。
JDKのmanagementディレクトリの下には
$ ls conf/management/ jmxremote.access* management.properties* jmxremote.password.template* snmp.acl.template
となっています。
どうやら、managementの設定がネイティブ・バンドルになかったのが原因のようです。
暫定処置で、JDKのmanagementディレクトリ下を、アプリケーションのruntime/conf下にコピーしたところ、JConsoleからの接続先にアプリケーションが登場しました。なお、接続を試みるとエラーとなったので、追加の設定が必要なようです。
conf/managementの設定調査¶
アプリケーションのapp/AnalogClock.cfg に以下を追記したらアプリケーションが起動しなくなりました。
[JVMOptions] : -Dcom.sun.management.jmxremote
- 予想
jdk.management.agent モジュールがアプリケーションに含まれるJRE(抜粋)に含まれていない