java - example - jmx monitoring




Démarrage automatique d'un service JBoss(MBean) (2)

Pour moi, cela a aidé à définir les méthodes stop and start dans l'interface MBean:

public interface MyServiceMBean {
    ...

    // Lifecycle callbacks
    void start() throws Exception;
    void stop();
}

L'avantage est que vous n'avez pas à étendre ServiceMBean ou ServiceMBeanSupport.

J'essaye de construire un service de JBoss qui devrait être démarré automatiquement, chaque fois que le serveur est lancé.

J'ai la structure de classe suivante pour mon service:

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

J'ai aussi le fichier de configuration suivant - jboss-service.xml - pour mon 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>

Ma question est: comment démarrer automatiquement ce service?

Je m'attendais à ce que JBoss appelle la méthode start () dans le cadre du processus de chargement, mais ce n'est pas le cas: j'ai beaucoup de code de log dans ma méthode start (), mais je n'ai vu aucune sortie.

Toutefois, lorsque je regarde le statut MBean à l'aide de JMXConsole, son état (StateString) est 'Started'.

Problème résolu

J'ai trouvé la solution à mon problème. Je remplaçais les méthodes start (), stop (), destroy () et create (); néanmoins, puisque j'étend la classe abstraite ServiceMBeanSupport, je devrais surcharger les méthodes startService (), stopService (), etc.

Je viens de déplacer mon code de la méthode start () vers la méthode startService () et maintenant tout se comporte comme j'ai besoin: dès que ses dépendances sont remplies, mon service est démarré et la méthode startService () est exécutée.

Je pense que la conclusion est la suivante: bien que le cycle de vie d'un MBean implique d'appeler create (), start (), stop () et destroy (), l'implémentation de la classe abstraite ServiceMBeanSupport utilise ces méthodes pour gérer le cycle de vie. Néanmoins, il fournit les méthodes protégées * Service () afin de permettre au programmeur de participer au cycle de vie.


Problème résolu

J'ai trouvé la solution à mon problème. Je remplaçais les méthodes start (), stop (), destroy () et create (); néanmoins, puisque j'étend la classe abstraite ServiceMBeanSupport, je devrais surcharger les méthodes startService (), stopService (), etc.

Je viens de déplacer mon code de la méthode start () vers la méthode startService () et maintenant tout se comporte comme j'ai besoin: dès que ses dépendances sont remplies, mon service est démarré et la méthode startService () est exécutée.

Je pense que la conclusion est la suivante: bien que le cycle de vie d'un MBean implique d'appeler create (), start (), stop () et destroy (), l'implémentation de la classe abstraite ServiceMBeanSupport utilise ces méthodes pour gérer le cycle de vie. Néanmoins, il fournit les méthodes protégées * Service () afin de permettre au programmeur de participer au cycle de vie.





mbeans