2 Replies Latest reply on Mar 28, 2007 12:44 PM by Karan

    How to auto-start my singleton service?

    Karan Newbie

      I am using JDK 5, JBoss 4.0.5GA and Windows. I'm fairly familiar with clustering, but barely with MBeans and sar archives.

      I have gone through several posts, documentation and the wiki, and finally
      managed to make a MBean service. I deployed the sar to farm/ it gets copied to all nodes. When I go to the web-console, I can see that the service has been successfully deployed on both the nodes. The jboss-service.xml of the sar contains:

       <mbean code="com.tcore.jboss.service.SingletonServiceExample"
       <attribute name="Message">Message in the XML</attribute>

      Shouldn't the service automatically start on whichever node is the master?
      I can manually invoke the start() operation which prints a diagnostic message to let me know that the service has started. But how do I make it work so that whichever node becomes master the service starts and when it loses master status, the service stops?

      Following is the service code:
      package com.tcore.jboss.service;
      public interface SingletonServiceExampleMBean
       public String getMessage();
       public void setMessage(String message);
       public void printMessage();
       public boolean isTheMasterNode();
       public void startSingleton() throws Exception;
       public void stopSingleton();

      package com.tcore.jboss.service;
      public class SingletonServiceExample implements SingletonServiceExampleMBean
       private String message;
       private boolean theMasterNode = false;
       public void startSingleton() throws Exception
       theMasterNode = true;
       message = "I have been started! " + theMasterNode;
       System.out.println("Starting with message: " + message);
       public void stopSingleton()
       theMasterNode = false;
       message = "I have been stopped!" + theMasterNode;
       System.out.println("Stopping with message: " + message);
       public String getMessage()
       { return message; }
       public void setMessage(String message)
       { this.message = message; }
       public void printMessage()
       { System.out.println(message); }
       public boolean isTheMasterNode()
       { return theMasterNode; }