2009-08-05 12 views
2

リモートglassfishサーバーを監視したいと思います。私はdomain.xmlのJMX Connectionを有効にしました:jconsoleでリモートGlassfishサーバーで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) at java .security.Ac sun.misc.Launcher $ AppClassLoaderでjava.lang.ClassLoader.loadClass(ClassLoader.java:307) でjava.net.URLClassLoader.findClass(URLClassLoader.java:188) でcessController.doPrivileged(ネイティブ 方法) 。 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(ネイティブ メソッド) at java.util.logging.LogManager。(LogManager.java:156) at java.util.logging.Logger.getLogger(Logger.java:273) at sun.management.snmp。 util.MibLogger。(MibLogger.java:57) at sun.management.snmp.u (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: にjava.lang.ClassNotFoundException: コム はのMBeanServerBuilder クラス com.sun.enterprise.admin.server.core.jmx.AppServerMBeanServerBuilderのロードに失敗しました.sun.enterprise.admin.server.core.jmx.AppServerMBeanServerBuilder at javax.management.MBeanServerFactory.checkMBeanServerBuilder(MBeanServerFactory.java:480) (javax.management.MBeanServerFactory.getNewMBeanServerBuilder(MBeanServerFactory。 :Javaの:javax.management.MBeanServerFactory.createMBeanServerでjavax.management.MBeanServerFactory.createMBeanServer(MBeanServerFactory.java:213) (MBeanServerFactory.javaでjavax.management.MBeanServerFactory.newMBeanServer(MBeanServerFactory.java:298) で511) sun.management.jmxremote.ConnectorBootstrap.initializeでjava.lang.management.ManagementFactory.getPlatformMBeanServer(ManagementFactory.java:504) でsun.management.ManagementFactory.createPlatformMBeanServer(ManagementFactory.java:302) (ConnectorBootstrapにおける174) 。 java:392) at sun.management.Agent.startAgent(Agent.java:127) at sun.management.Agent.startAgent(Agent.java:239) 原因: java.lang.ClassN otFoundException: com.sun.enterprise.admin.server.core.jmx.AppServerMBeanServerBuilder at java.net.URLClassLoader $ 1.run(URLClassLoader.java:200) (java.security.AccessController)sun.misc.Launcher $ AppClassLoader.loadClassでdoPrivilegedの(ネイティブ 方法)java.net.URLClassLoader.findClass(URLClassLoader.java:188)で java.lang.ClassLoader.loadClass(ClassLoader.java:307)で ( Launcher.java:301)javax.management.MBeanServerFactory.checkMBeanServerBuilderでjavax.management.MBeanServerFactory.loadBuilderClass(MBeanServerFactory.java:423) でjava.lang.ClassLoader.loadClass(ClassLoader.java:252) で(て、MBeanServerFactory。 Javaの:エージェントによってスロー465) ... 9もっと例外: javax.management.JMRuntimeException: はのMBeanServerBuilder クラス com.sun.enterprise.admin.server.coreのロードに失敗しました.jmx.AppServerMBeanServerBuilder: にjava.lang.ClassNotFoundException: com.sun.enterprise.admin.server.core.jmx.AppServerMBeanServerBuilder

どのように問題を解決することができますか?

ありがとうございます。

答えて

3

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

+0

確かに:JVMオプションからすべてのcom.sun.management.jmxremote設定を削除する必要がありますか? – tronda

+0

これは、彼らがそのままの状態に保つことを意味します。 JMXの設定が存在する場合は、それらを追加しないでください。 – Pavel

0
+0

いいえ。また、私はGF v2.1(9.1.1)を使用しています(b60e-fcsをビルド) – Pavel

2

私はGlassfishのとそのJMXを確保するために、次のオプションを設定することになったがファイアウォールフレンドリーです:

<jvm-options>-Dcom.sun.aas.jconsole.server.cbport=XXXX</jvm-options> 
XXXXは、アプリケーション・サーバ構成されたJMXポート番号とともにファイアウォールで使用するポート番号をある

(通常8686)。

続きを読むthis blogpost。この機能には、新しいバージョンのGlassfishが必要です。私はGlassfish 2.1.1でうまく使用しました。

2

まだ神秘的な行動は、これら4つの設定であなたはGlassfishのを実行しているJVMに接続することができます

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

を注意してください(管理コンソールでのdomain.xmlに追加、再起動が必要)!今では誰もがjconsoleに接続できるので、これは安全ではありません!

IMOこれはJMXコネクタを使用しているGlassfishの方法ではありません。 (GF 3.1で作品以上)

+0

ありがとうございます。これはまさに私のマシン上のVM上で実行されているglassfishサーバーにリモートで接続するために探していた答えです! – Cuga

0

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

./asadmin有効安全管理者

余分Glassfishのサーバ構成は、さらにConnecting remotely to Glassfish through JMXでより多くを参照してください、セキュリティを有効にするためにあります。

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

** Glassfishは、JVMオプションを使用した設定のみで、上記の実行時例外から開始することはできません。 ** GF3.1.2以上、Java 7を使用しています。

関連する問題