5

リモートのGlassfishサーバーを監視したいと思います。domain.xmlでJMX接続を有効にしました。

<jmx-connector accept-all="true" address="0.0.0.0" auth-realm-name="admin-realm" enabled="true" name="system" port="8686" protocol="rmi_jrmp" security-enabled="false">

しかし、これは役に立ちませんでした。それでもJConsoleでサーバーに接続できません。次に、解決策を見つけました。リモート接続用に8686ポートを開くには、domain.xmlでJVMプロパティを指定する必要があります。そこで、この行をjava-configセクションに追加しました。

<jvm-options>-Dcom.sun.management.jmxremote</jvm-options>
<jvm-options>-Dcom.sun.management.jmxremote.port=8686</jvm-options>
<jvm-options>-Dcom.sun.management.jmxremote.local.only=false</jvm-options>
<jvm-options>-Dcom.sun.management.jmxremote.authenticate=false</jvm-options>

しかし、サーバーを起動すると、次のエラーが発生します。

Logmanager "com.sun.enterprise.server.logging.ServerLogManager" java.lang.ClassNotFoundException:com.sun.enterprise.server.logging.ServerLogManager at java.net.URLClassLoader $ 1.run(URLClassLoader.java:200)を読み込めませんでしたjava.security.AccessController.doPrivileged(ネイティブメソッド)at java.net.URLClassLoader.findClass(URLClassLoader.java:188)at java.lang.ClassLoader.loadClass(ClassLoader.java:307)at sun.misc.Launcher $ AppClassLoader .loadClass(Launcher.java:301)at java.lang.ClassLoader.loadClass(ClassLoader.java:252)at java.util.logging.LogManager $ 1.run(LogManager.java:166)at java.security.AccessController.doPrivileged (ネイティブメソッド)java.util.logging.LogManager。(LogManager.java:156)atjava.util.logging.Logger。getLogger(Logger.java:273)at sun.management.snmp.util.MibLogger。(MibLogger.java:57)at sun.management.snmp.util.MibLogger。(MibLogger.java:42)at sun.management.jmxremote .ConnectorBootstrap。(ConnectorBootstrap.java:760)at sun.management.Agent.startAgent(Agent.java:127)at sun.management.Agent.startAgent(Agent.java:239)javax.management.JMRuntimeException:MBeanServerBuilderのロードに失敗しましたクラスcom.sun.enterprise.admin.server.core.jmx.AppServerMBeanServerBuilder:java.lang.ClassNotFoundException:com.sun.enterprise.admin.server.core.jmx.AppServerMBeanServerBuilder at javax.management.MBeanServerFactory.checkMBeanServerBuilder(MBeanServerFactory.java :480)javax.management.MBeanServerFactory.getNewMBeanServerBuilder(MBeanServerFactory.java:511)atjavax。management.MBeanServerFactory.newMBeanServer(MBeanServerFactory.java:298)at javax.management.MBeanServerFactory.createMBeanServer(MBeanServerFactory.java:213)at javax.management.MBeanServerFactory.createMBeanServer(MBeanServerFactory.java:174)at sun.management.ManagementFactory.createPlatformMBeanServer (ManagementFactory.java:302)at java.lang.management.ManagementFactory.getPlatformMBeanServer(ManagementFactory.java:504)at sun.management.jmxremote.ConnectorBootstrap.initialize(ConnectorBootstrap.java:392)at sun.management.Agent.startAgent( Agent.java:127)at sun.management.Agent.startAgent(Agent.java:239)原因:java.lang.ClassNotFoundException:com.sun.enterprise.admin.server.core.jmx.AppServerMBeanServerBuilderatjava.net。 URLClassLoader$1。run(URLClassLoader.java:200)at java.security.AccessController.doPrivileged(Native Method)at java.net.URLClassLoader.findClass(URLClassLoader.java:188)at java.lang.ClassLoader.loadClass(ClassLoader.java:307) sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:301)at java.lang.ClassLoader.loadClass(ClassLoader.java:252)at javax.management.MBeanServerFactory.loadBuilderClass(MBeanServerFactory.java:423)atjavax。 management.MBeanServerFactory.checkMBeanServerBuilder(MBeanServerFactory.java:465)... 9 moreエージェントによってスローされた例外:javax.management.JMRuntimeException:MBeanServerBuilderクラスのロードに失敗しましたcom.sun.enterprise.admin.server.core.jmx.AppServerMBeanServerBuilder: java.lang.ClassNotFoundException:com.sun.enterprise.admin.server。core.jmx.AppServerMBeanServerBuilder

どうすれば問題を解決できますか?

前もって感謝します。

4

5 に答える 5

5

依然として不思議な動作ですが、これら 4 つの設定を使用すると、Glassfish を実行している JVM に接続できます (管理コンソールで domain.xml に追加し、再起動が必要です)。

-Djava.rmi.server.hostname=yourhost
-Dcom.sun.management.jmxremote.port=8686
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false

注意してください!誰でも jconsole を接続できるようになったため、これは安全ではありません。

IMO これは、JMX コネクタを使用する Glassfish の方法ではありません。

(上記は GF 3.1 で動作します)

于 2011-11-18T04:49:58.177 に答える
3

この問題を解決する手順は次のとおりです。1。デフォルト設定を使用します。2。GlassFishのインスタンスのJVMオプションに-Djava.rmi.server.hostname=を追加します。

于 2009-08-31T07:38:44.563 に答える
3

Glassfish を使用した JMX がファイアウォールに適していることを確認するために、次のオプションを設定することになりました。

<jvm-options>-Dcom.sun.aas.jconsole.server.cbport=XXXX</jvm-options>

ここで、XXXX は、アプリケーション サーバーで構成された JMX ポート番号 (通常は 8686) と共にファイアウォールで使用するポート番号です。

詳細については、このブログ投稿をご覧ください。この機能には新しいバージョンの Glassfish が必要であることに注意してください。Glassfish 2.1.1 で問題なく使用できました。

于 2010-03-18T13:42:58.003 に答える
0

Glassfish アプリ サーバー内でアプリケーションを実行する場合は、単に次の asadmin コマンドを実行します。変更を有効にするには、実行中のすべてのサーバーを再起動する必要があります。

./asadmin enable-secure-admin

セキュリティをさらに有効にする追加の Glassfish サーバー構成があります。詳細については、JMX を介して Glassfish にリモートで接続するを参照してください。

JVM オプションの手順に従う必要があります。これらは、一般的な Java アプリケーションの手順です。Glassfish アプリケーション サーバーで実行される Java アプリケーションの場合は、単に asadm コマンドを使用します。それは私に多くの時間を節約しました!

** また、JVM オプションを使用した設定のみでは、Glassfish は上記の実行時例外で起動に失敗することに注意してください。** GF3.1.2 以降と Java 7 を使用しています。

于 2015-03-20T22:57:32.300 に答える
0

GlassFish issue 1409ではないですか?

于 2009-08-06T13:51:50.347 に答える