JCONSOLE으로 액세스 할 수 있도록 원격 유리 피쉬 서버에서 JMX를 활성화하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1231868

  •  22-07-2019
  •  | 
  •  

문제

원격 유리 피쉬 서버를 모니터링하고 싶습니다. 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 (urlclasser.java:200)을로드 할 수 없습니다. at Java.security.accesscontroller.doprivileged (java.net.urlclassloader.findclass (urlclassloader.java:188)의 java.lang.classload.loadclass (classloader.java:307)의 appclass.launcher at appclass.launcher. java.lang.classloader.loadclass (classloader.java:252)의 .loadclass (unlacker.java:301)는 java.util.logging.logmanager $ 1.Run (logmanager.java:166)에서 java.security.accesscontroller.dopriverged (기본 방법) java.util.logging.logmanager. (logmanager.java:156) at java.util.logging.logger.getLogger (logger.java:273)의 sun.management.snmp.util.miblogger. (miblogger. .java : 57)에서 sun.management.snmp.util.miblogger. (miblogger.java:42)의 sun.management.jmxremote.connectorbootstrap. 자바 : 127) a T Sun.Management.agent.startagent (Agent.java:239) javax.management.jmruntimeexception : mbeanserverbuilder class com.sun.enterprise.admin.server.core.jmx.appsermbeanserbuilder : java.lang.classnotnotnotcemence : com. javax.management.mbeanserverfactory.checkmbeanserbuilder (mbeanservervactory.java:480)의 javax.manormanagement (mmanaveanserverververfactory.getewmbean) 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) java.lang.management.managementfactory.getplatformmmbeanserver (managementfactory.java:504)에서 sun.management.jmxremote.connectorbootstrap.initialize (Connectorbootstrap. Java : 392)에서 Sun.Management.agent.startagent (agent.java:127)에서 sun.management.agent.startagent (agent.java:239) : java.lang.classnotfoundexception : com.sun.entterprise.admin .server.core.jmx.apservermbeanserbuilder at java.net.urlclassloader $ 1.Run (urlclassLoader.java:200)의 java.security.accesscontroller.doprivireged (기본 방법) at java.net.urlclassloader.findclass ) at Java.lang.classLoader.loadclass (classloader.java:307) at Sun.Misc.launcher $ appClassLoader.loadClass (java.lang.classloader.loadclass (classloader.java:252)의 javax (java.java:301). .management.mbeanserverfactory.loadBuilderClass (javax.management.mbeanserverfactory.checkmbeanserbuilder (mbeanservertory.java:465)의 javax.management.mbeanserbuilder.java:465)의. com.sun.enterprise.admin.server.core.jmx.appservermbeanserbuilder : java.lang.classnotfoundexception : com.sun.ente rprise.admin.server.core.jmx.appservermbeanserbuilder

문제를 어떻게 해결할 수 있습니까?

미리 감사드립니다.

도움이 되었습니까?

해결책

문제를 해결하기위한 단계는 다음과 같습니다. 1. 기본 설정을 사용합니다.

다른 팁

여전히 신비로운 동작이지만이 4 가지 설정을 사용하면 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 Way가 아닙니다.

(위의 GF 3.1에서 작동)

Glassfish가있는 JMX가 방화벽 친화적인지 확인하기 위해 다음 옵션을 설정했습니다.

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

여기서 XXXX는 방화벽에서 사용하는 포트 번호가 Application Server와 함께 JMX 포트 번호 (일반적으로 8686)입니다.

더 읽어보십시오 이 블로그 포스트. 이 기능에는 최신 버전의 Glassfish가 필요합니다. 나는 Glassfish 2.1.1과 함께 성공적으로 사용했습니다.

그렇지 않습니다 Glassfish Issue 1409?

Glassfish App Server 내에서 응용 프로그램을 실행하면 다음 Asadmin 명령을 실행하시면 변경 사항을 변경하려면 모든 실행중인 서버를 다시 시작해야합니다.

./Asadmin enable-secure-admin

보안을 더욱 활성화하기위한 추가 Glassfish 서버 구성이 있습니다. JMX를 통해 Glassfish에 원격으로 연결합니다.

JVM 옵션의 단계를 따라야합니다. 이는 일반적으로 Java 응용 프로그램에 대한 지침입니다. Glassfish Application Server로 실행되는 Java 응용 프로그램의 경우 ASADM 명령을 사용합니다. 그것은 나에게 많은 시간을 절약했다!

** 또 다른 참고 사항, JVM 옵션을 사용하는 설정 만 있으면 Glassfish는 위의 런타임 예외로 시작하지 않습니다. ** GF3.1.2 이상, Java 7을 사용하고 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top