ObjectNamingStrategy de JMX para Liferay y Websphere
Liferay registra ciertos beans como MBeans en el servidor JMX proporcionado por el servidor que lo contiene. A pesar de que JMX es un estándar (JSR 262), el método en el que son registrados en el servidor es un proceso un poco propio de cada uno de los vendors de los servidores.
Con Liferay sobre WAS nos encontramos con el problema de que, a pesar de registrar los MBeans sin problemas, si paramos exclusivamente la aplicación, el portal no será capaz de desregistrarlos debido a que el nombre que el portal asigna a estos no es el que Websphere les ha dado internamente.
Además, del problema anterior surge otro: tras intentar arrancar la aplicación de nuevo, veremos varias excepciones relacionadas con estos beans; esto se debe a que, por lo mencionado en el parrafo superior, no podemos registrarlos ya que estos todavía existen en el servidor JMX.
Para terminar con este problema, lo lógico sería utilizar una implementación de org.springframework.jmx.export.naming.ObjectNamingStrategy, tal y como Spring soporta para estos casos, pero debido a que Liferay registra ciertos beans de manera manual y no a través del org.springframework.jmx.export.MBeanExporter deberemos usar una configuración de AOP para interceptar los registros y modificar el nombre de manera consecuente.
WAS, debido a que soporta clusterización de manera nativa, para saber a qué servidor pertenece cada uno de los MBeans registrados en su servidor JMX añade los siguientes parámetros al nombre:
- cell: Lleva el nombre de la célula en la que se encuentra el cliente que registra el MBean.
- process: Tiene el valor del nombre del servidor en el que se encuentra el cliente que registra el MBean.
- node: Contiene el nombre del nodo en el que se encuentra el servidor que aloja al cliente que registra el MBean.
De no encontrarnos en un entorno distribuido, podríamos hardcodear estos datos. Pero como la realidad es otra, estos valores debemos conocerlos en tiempo de ejecución para que funcione correctamente. Para esto, WAS dispone de un servicio que es capaz de proporcionaros dicha información.
Una vez visto cómo recuperar los datos necesarios para renombrar los objetos, veamos cómo interceptamos la llamada al MBeanServer para reescribir los nombres.
Filed under: Informática, Java, Software, White Paper | Deja un comentario
Etiquetas: jmx, liferay, namingstrategy, objectnamingstrategy, websphere


No Responses Yet to “ObjectNamingStrategy de JMX para Liferay y Websphere”