java jboss service java-ee mbeans

java - Automáticamente iniciando un servicio JBoss(MBean)



service java-ee (2)

Para mí, ayudó a definir los métodos de detener y comenzar en la interfaz MBean:

public interface MyServiceMBean { ... // Lifecycle callbacks void start() throws Exception; void stop(); }

La ventaja es que no tiene que extender ServiceMBean o ServiceMBeanSupport.

Intento crear un servicio de JBoss que se debe iniciar automáticamente, cada vez que se inicie el servidor.

Tengo la siguiente estructura de clase para mi servicio:

public interface CumbiaXPMServiceMBean extends org.jboss.system.ServiceMBean public class CumbiaXPMService extends org.jboss.system.ServiceMBeanSupport implements CumbiaXPMServiceMBean

También tengo el siguiente archivo de configuración - jboss-service.xml - para mi servicio:

<server> <mbean code="uniandes.cumbia.xpm.jboss.CumbiaXPMService" name="jcumbia:service=JCumbiaEngine"> <depends>jcumbia:service=cumbiaConsole</depends> <attribute name="LocationInCumbia" attributeClass="java.lang.String">XPMEngine</attribute> </mbean> </server>

Mi pregunta es: ¿cómo comienzo automáticamente este servicio?

Esperé que JBoss llame al método start () como parte del proceso de carga, pero no es así: tengo un código de inicio de sesión en mi método start (), pero no he visto ningún resultado.

Sin embargo, cuando miro el estado de MBean usando JMXConsole, su estado (StateString) es ''Comenzado''.

Problema resuelto

Encontré la solución a mi problema. Estaba anulando los métodos start (), stop (), destroy () y create (); sin embargo, dado que extiendo la clase abstracta ServiceMBeanSupport, debería anular los métodos startService (), stopService (), etc.

Acabo de mover mi código del método start () al método startService () y ahora todo se comporta como lo necesitaba: tan pronto como se cumplen sus dependencias, mi servicio se inicia y se ejecuta el método startService ().

Creo que la conclusión es: aunque el ciclo de vida de un MBean implica llamar a create (), start (), stop () y destroy (), la implementación de la clase abstracta ServiceMBeanSupport usa esos métodos para manejar el ciclo de vida. Sin embargo, proporciona los métodos protegidos * Servicio () para permitir que el programador participe en el ciclo de vida.


Problema resuelto

Encontré la solución a mi problema. Estaba anulando los métodos start (), stop (), destroy () y create (); sin embargo, dado que extiendo la clase abstracta ServiceMBeanSupport, debería anular los métodos startService (), stopService (), etc.

Acabo de mover mi código del método start () al método startService () y ahora todo se comporta como lo necesitaba: tan pronto como se cumplen sus dependencias, mi servicio se inicia y se ejecuta el método startService ().

Creo que la conclusión es: aunque el ciclo de vida de un MBean implica llamar a create (), start (), stop () y destroy (), la implementación de la clase abstracta ServiceMBeanSupport usa esos métodos para manejar el ciclo de vida. Sin embargo, proporciona los métodos protegidos * Servicio () para permitir que el programador participe en el ciclo de vida.