Automatisch starten JBoss-Dienst (MBean)
Ich versuche zu bauen, ein JBoss-Dienst sollte automatisch gestartet werden, jedes mal, wenn der server gestartet wird.
Ich habe folgende Klassenstruktur für mein service:
public interface CumbiaXPMServiceMBean extends org.jboss.system.ServiceMBean
public class CumbiaXPMService extends org.jboss.system.ServiceMBeanSupport implements CumbiaXPMServiceMBean
Ich habe auch die folgende Konfigurationsdatei -- jboss-service.xml -- für mein service :
<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>
Meine Frage ist: wie kann ich diesen Dienst automatisch zu starten?
Erwartete ich, dass JBoss rufen die Methode start( ) als Teil als den laden, aber es ist nicht: ich habe viel von dem code in der start () - Methode, aber ich habe nicht gesehen, keine Ausgabe.
Allerdings, wenn ich mir den MBean-status mit der JMXConsole, seinen Status (StateString) ist 'Gestartet'.
Problem Gelöst
Fand ich die Lösung zu meinem problem. Ich war das überschreiben der Methoden start( ), stop( ), destroy( ) und create( ); dennoch, da ich das erweitern der abstrakten Klasse ServiceMBeanSupport, ich sollte das überschreiben der Methoden startService( ), stopService( ), etc.
Ich zog meinen code aus der Methode start( ) die Methode startService( ) und jetzt ist alles verhält sich, wie ich brauchte: sobald Ihre Abhängigkeiten erfüllt sind, mein service wird gestartet und die Methode startService( ) ausgeführt wird.
Ich denke, die Schlußfolgerung ist: obwohl der Lebenszyklus eines MBean umfasst das aufrufen von create( ), start( ), stop( ) und destroy( ), die Umsetzung von der abstrakten Klasse ServiceMBeanSupport verwendet diese Methoden für den Umgang mit den Lebens-Zyklus. Dennoch bietet es die protected-Methoden *Service ( ), um zu erlauben, dass der Programmierer, um die Teilnahme an den Lebenszyklus.
- "automatisch"? Nicht den Dienst "starten", wenn die app-server gestartet ist? Wenn Sie die JMX-Konsole sagt es gestartet wird, welches Verhalten, glauben Sie es nicht?
- Ich habe einige logging-code in der start () - Methode, aber es wird nicht ausgeführt. Ich habe einige logging-code in den Konstruktor der Klasse, und ich kann sehen, dass sein Ausgang, aber das ist es.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Problem Gelöst
Fand ich die Lösung zu meinem problem. Ich war das überschreiben der Methoden start( ), stop( ), destroy( ) und create( ); dennoch, da ich das erweitern der abstrakten Klasse ServiceMBeanSupport, ich sollte das überschreiben der Methoden startService( ), stopService( ), etc.
Ich zog meinen code aus der Methode start( ) die Methode startService( ) und jetzt ist alles verhält sich, wie ich brauchte: sobald Ihre Abhängigkeiten erfüllt sind, mein service wird gestartet und die Methode startService( ) ausgeführt wird.
Ich denke, die Schlußfolgerung ist: obwohl der Lebenszyklus eines MBean umfasst das aufrufen von create( ), start( ), stop( ) und destroy( ), die Umsetzung von der abstrakten Klasse ServiceMBeanSupport verwendet diese Methoden für den Umgang mit den Lebens-Zyklus. Dennoch bietet es die protected-Methoden *Service ( ), um zu erlauben, dass der Programmierer, um die Teilnahme an den Lebenszyklus.
Mir hat es geholfen die Definition der stop-und start-Methoden in der MBean-Interface:
Der Vorteil ist, dass Sie nicht haben, um verlängern ServiceMBean oder ServiceMBeanSupport.