Me gustaría monitor remoto servidor glassfish. He habilitado la Conexión en JMX domain.xml:

<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">

Pero esto no ayuda. Todavía no puedo conectar al servidor con JConsole. A continuación, he encontrado la solución – debo especificar las propiedades de JVM en domain.xml para abrir 8686 puerto para la conexión remota.
Así que he añadido estas líneas en java-config sección:

<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>

Pero ahora cuando estoy empezando servidor, estoy recibiendo errores siguientes:

No se pudo cargar Logmanager
«com.sol.empresa.servidor.la tala de árboles.ServerLogManager»
java.lang.ClassNotFoundException:
com.sol.empresa.servidor.la tala de árboles.ServerLogManager
en java.net.URLClassLoader$1.ejecutar(URLClassLoader.java:200)
en java.de seguridad.AccessController.doPrivileged(Nativo
El método)
en java.net.URLClassLoader.findClass(URLClassLoader.java:188)
en java.lang.Cargador de clases.loadClass(cargador de clases.java:307)
en el sol.misc.Lanzador De$AppClassLoader.loadClass(Lanzador.java:301)
en java.lang.Cargador de clases.loadClass(cargador de clases.java:252)
en java.util.la tala de árboles.LogManager$1.ejecutar(LogManager.java:166)
en java.de seguridad.AccessController.doPrivileged(Nativo
El método)
en java.util.la tala de árboles.LogManager.(LogManager.java:156)
en java.util.la tala de árboles.Logger.getLogger(Registrador.java:273)
en el sol.de gestión.snmp.util.MibLogger.(MibLogger.java:57)
en el sol.de gestión.snmp.util.MibLogger.(MibLogger.java:42)
en el sol.de gestión.jmxremote.ConnectorBootstrap.(ConnectorBootstrap.java:760)
en el sol.de gestión.Agente.startAgent(Agente.java:127)
en el sol.de gestión.Agente.startAgent(Agente.java:239)
javax.de gestión.JMRuntimeException:
No se pudo cargar MBeanServerBuilder
clase
com.sol.empresa.admin.servidor.núcleo.jmx.AppServerMBeanServerBuilder:
java.lang.ClassNotFoundException:
com.sol.empresa.admin.servidor.núcleo.jmx.AppServerMBeanServerBuilder
en javax.de gestión.MBeanServerFactory.checkMBeanServerBuilder(MBeanServerFactory.java:480)
en javax.de gestión.MBeanServerFactory.getNewMBeanServerBuilder(MBeanServerFactory.java:511)
en javax.de gestión.MBeanServerFactory.newMBeanServer(MBeanServerFactory.java:298)
en javax.de gestión.MBeanServerFactory.createMBeanServer(MBeanServerFactory.java:213)
en javax.de gestión.MBeanServerFactory.createMBeanServer(MBeanServerFactory.java:174)
en el sol.de gestión.ManagementFactory.createPlatformMBeanServer(ManagementFactory.java:302)
en java.lang.de gestión.ManagementFactory.getPlatformMBeanServer(ManagementFactory.java:504)
en el sol.de gestión.jmxremote.ConnectorBootstrap.inicializar(ConnectorBootstrap.java:392)
en el sol.de gestión.Agente.startAgent(Agente.java:127)
en el sol.de gestión.Agente.startAgent(Agente.java:239)
Causado por:
java.lang.ClassNotFoundException:
com.sol.empresa.admin.servidor.núcleo.jmx.AppServerMBeanServerBuilder
en java.net.URLClassLoader$1.ejecutar(URLClassLoader.java:200)
en java.de seguridad.AccessController.doPrivileged(Nativo
El método)
en java.net.URLClassLoader.findClass(URLClassLoader.java:188)
en java.lang.Cargador de clases.loadClass(cargador de clases.java:307)
en el sol.misc.Lanzador De$AppClassLoader.loadClass(Lanzador.java:301)
en java.lang.Cargador de clases.loadClass(cargador de clases.java:252)
en javax.de gestión.MBeanServerFactory.loadBuilderClass(MBeanServerFactory.java:423)
en javax.de gestión.MBeanServerFactory.checkMBeanServerBuilder(MBeanServerFactory.java:465)
… 9 más Excepción que se produce por el agente :
javax.de gestión.JMRuntimeException:
No se pudo cargar MBeanServerBuilder
clase
com.sol.empresa.admin.servidor.núcleo.jmx.AppServerMBeanServerBuilder:
java.lang.ClassNotFoundException:
com.sol.empresa.admin.servidor.núcleo.jmx.AppServerMBeanServerBuilder

¿Cómo puedo solucionar el problema?

Gracias de antemano.

InformationsquelleAutor Pavel | 2009-08-05

5 Comentarios

  1. 3

    Pasos para resolver el problema son:
    1. utilizar la configuración predeterminada
    2. agregar -Djava.rmi.servidor.hostname= en la JVM Opciones de la instancia de GlassFish.

    • Sólo para estar seguro: El primer paso – hizo que implican la eliminación de todas las com.sol.de gestión.jmxremote configuración de opciones de JVM?
    • Esto significa que para mantener la misma medida que se fuera-de-la-caja. Si el JMX configuración existe – que si no no – no agregue ellos.
  2. 3

    Todavía mística de la conducta, pero con estos 4 configuración se puede conectar a la JVM ejecuta Glassfish (añadir a la domain.xml en la consola de administración, se requiere reinicio)

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

    Cuidado ! Esto no es seguro, ya que ahora cualquiera se puede conectar a un jconsole para !

    OMI este no es el Glassfish camino, que es el uso de la JMX conector.

    (Por encima de las obras en GF 3.1)

    • Muchas gracias. Esta es exactamente la respuesta que has estado buscando para conectarse de forma remota a un servidor glassfish server que se ejecuta en una máquina virtual en mi máquina!
  3. 2

    Terminé la configuración de la siguiente opción para asegurarse de que JMX con Glassfish es el firewall de usar:

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

    Donde XXXX es el número de puerto que se utiliza en el firewall junto con la aplicación de servidor configurado JMX número de puerto (normalmente 8686).

    Leer más en esta publicación de blog. Tenga en cuenta que esta característica requiere una versión más reciente de Glassfish. He utilizado con éxito con Glassfish 2.1.1.

  4. 0

    Si ejecutar la aplicación dentro del servidor de aplicaciones Glassfish, basta con ejecutar el siguiente comando asadmin, tendría que reiniciar todos los servidores en ejecución para que el cambio surta efecto.

    ./asadmin enable-seguro-admin

    Hay más de Glassfish server configuraciones para habilitar más de seguridad, ver más en Se conecta de forma remota a Glassfish a través de JMX.

    Usted necesita seguir los pasos de la JVM opciones, estas son las instrucciones para las aplicaciones Java en general. Para una aplicación Java que se ejecuta con el servidor de aplicaciones Glassfish, simplemente con el asadm comando. Que me salvó un montón de tiempo!

    ** Otra nota, solo con la configuración por medio de opciones de JVM, Glassfish podría no iniciarse con las anteriores excepciones en tiempo de ejecución.
    ** Estoy usando GF3.1.2 y superior, y Java 7.

Dejar respuesta

Please enter your comment!
Please enter your name here