2009-10-15 18 views
18

Hola me gustaría monitorear una aplicación Java usando el navegador pero al mismo tiempo utilizando la infraestructura JMX existente.¿Hay algún puente JMX - REST disponible?

Sé que JMX proporciona una interfaz HTTP, pero creo que proporciona una interfaz web estándar y no es posible combinar su funcionalidad con un sistema existente.

¿Conoces alguna interfaz REST para JMX?

Mi investigación en Google actualmente muestra que hay uno project que hace algo similar. ¿Es esta la única opción?

Respuesta

3

Tomcat proporciona un JMX Proxy Servlet en su aplicación de administrador. No creo que sea exactamente REST, pero es sin estado y está construido a partir de simples solicitudes HTTP, por lo que debe ser lo suficientemente cerca.

+0

Tomcat JMX proxy no es compatible con JSON, XML u otro tipo de codificación. En realidad, no admite la tecla Aceptar en el encabezado. –

1

Es posible que desee echar un vistazo a jmx4perl. Viene con un servlet de agente que envía una solicitud REST a las llamadas JMX locales y devuelve una estructura JSON con las respuestas. Es compatible con leer, escribir, ejecutar, enumerar (lista de mbeans) y las operaciones de búsqueda y sabe cómo sumergirse en estructuras de datos complejas a través de una expresión similar a XPath. Mira la descripción del protocolo para más detalles.

La próxima versión también puede gestionar solicitudes masivas (== varias a la vez) y agrega la posibilidad de publicar una solicitud JSON como alternativa a una solicitud REST GET.

En una de las próximas versiones, se admitirá un modo de proxy para que no sea necesario desplegar ningún servlet de agente en la plataforma de destino, sino solo en un servidor proxy intermedio.

23

Jolokia es un nuevo (en este momento) agente JMX que puede instalar en su JVM y expone el MBeanServer sobre HTTP en formato JSON.

1

MX4J es otra alternativa, citando a continuación a partir del que la página de inicio -.

MX4J es un proyecto de construcción de una implementación de código abierto de las extensiones de Java (TM) de gestión (JMX) y de la distancia JMX API (JSR 160) especificaciones, y para construir herramientas relacionadas con JMX.

2

Para la posteridad, recientemente he agregado un pequeño servidor web a mi paquete SimpleJMX. Expone frijoles de la plataforma MBeanServer a HTTP a través de Jetty si está en el classpath. También hay versiones de texto de todas las páginas que hacen que sea fácil de raspar.

// create a new JMX server listening on a specific port 
JmxServer jmxServer = new JmxServer(8000); 
jmxServer.start(); 

// register any beans to jmx as necessary 
jmxServer.register(someObj); 

// create a web server publisher listening on a specific port 
JmxWebServer jmxWebServer = new JmxWebServer(8080); 
jmxWebServer.start(); 

Hay una little test program lo que demuestra que en la operación. Aquí hay una imagen de java.lang:type=Memory accedida desde un navegador. Como puede ver, el resultado es un HTML muy básico.

enter image description here

+0

Me gusta mucho el proyecto, pero puede valer la pena señalar que el conector no funciona en el embarcadero 9, así que use el embarcadero 8. –

+0

Así que he intentado agregar el soporte Jetty 9 en SimpleJMX versión 1.10 @ShawnVader. ¿Adivina que no funciona? No tengo Java 7 por desgracia, así que no puedo probar 9 yo mismo. Hazme ping en http://256.com/gray/email/ si quieres que te ayude a ponerlo en funcionamiento. – Gray

Cuestiones relacionadas