User: user57  
  Date: 02/02/12 22:38:33

  Modified:    src/main/org/jboss/mq/server JBossMQService.java
                        JBossMQServiceMBean.java
  Log:
   o Added some warning logs when trying to stop/remove/whatever a service
     when the ObjectName given has no service context (before we silently
     ignored).
   o Fixed bug [ #511024 ] Exception when destroying Topic or Queue
     Simplified the bits that needed to talk to the SC by using a proxy
   o Updated the location where destinations are bound (jboss.mq.destination)
  
  Revision  Changes    Path
  1.12      +78 -165   jbossmq/src/main/org/jboss/mq/server/JBossMQService.java
  
  Index: JBossMQService.java
  ===================================================================
  RCS file: /cvsroot/jboss/jbossmq/src/main/org/jboss/mq/server/JBossMQService.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- JBossMQService.java       3 Jan 2002 04:00:54 -0000       1.11
  +++ JBossMQService.java       13 Feb 2002 06:38:33 -0000      1.12
  @@ -13,10 +13,15 @@
   import javax.management.MalformedObjectNameException;
   import javax.management.ObjectName;
   import javax.naming.InitialContext;
  +
   import org.jboss.mq.SpyQueue;
   import org.jboss.mq.SpyTopic;
   import org.jboss.mq.pm.PersistenceManager;
  +
   import org.jboss.system.ServiceMBeanSupport;
  +import org.jboss.system.ServiceControllerMBean;
  +
  +import org.jboss.util.MBeanProxy;
   
   /**
    * JMX MBean implementation for JBossMQ.
  @@ -25,18 +30,18 @@
    * @author     <a href="mailto:[EMAIL PROTECTED]";>Juha Lindfors</a>
    * @author     <a href="[EMAIL PROTECTED]">Hiram Chirino</a>
    * @see        JBossMQ subproject
  - * @version    $Revision: 1.11 $
  + * @version    $Revision: 1.12 $
    */
   public class JBossMQService
      extends ServiceMBeanSupport
      implements JBossMQServiceMBean
   {
  -   private static final String SERVICE_CONTROLLER_NAME = 
  -      "jboss.system:service=ServiceController";
  -   
      public String jndiBindLocation = "java:/JBossMQServer";
      
      // Attributes ----------------------------------------------------
  +
  +   /** A proxy to the service controller. */
  +   private ServiceControllerMBean serviceController;
      
      private ObjectName mqService;
      
  @@ -49,24 +54,7 @@
      
      public JBossMQService() 
      {
  -   }
  -   
  -   public ObjectName preRegister(MBeanServer server, ObjectName name)
  -      throws Exception
  -   {
  -      mqService = super.preRegister(server, name);
  -      return mqService;
  -   }
  -   
  -   
  -   /**
  -    * Gets the Name attribute of the JBossMQService object
  -    *
  -    * @return    The Name value
  -    */
  -   public String getName()
  -   {
  -      return "JBossMQ";
  +      // empty
      }
      
      /**
  @@ -79,9 +67,9 @@
         return jmsServer;
      }
      
  -   
      /**
       * Get the value of PersistenceManager.
  +    * 
       * @return value of PersistenceManager.
       */
      public ObjectName getPersistenceManager() 
  @@ -91,6 +79,7 @@
      
      /**
       * Set the value of PersistenceManager.
  +    * 
       * @param v  Value to assign to PersistenceManager.
       */
      public void setPersistenceManager(ObjectName objectName) 
  @@ -100,6 +89,7 @@
      
      /**
       * Get the value of StateManager.
  +    * 
       * @return value of StateManager.
       */
      public ObjectName getStateManager() 
  @@ -109,167 +99,95 @@
      
      /**
       * Set the value of StateManager.
  +    * 
       * @param v  Value to assign to StateManager.
       */
      public void setStateManager(ObjectName  objectName) 
      {
         this.stateManager = objectName;
      }
  -   
  -   /**
  -    * #Description of the Method
  -    *
  -    * @param  name           Description of Parameter
  -    * @exception  Exception  Description of Exception
  -    */
  +
      public void createQueue(String name) throws Exception
      {   
  -      try
  -      {     
  -         ObjectName queue = getQueueObjectName(name);
  -         getServer().createMBean("org.jboss.mq.server.QueueManager", queue);
  -         getServer().setAttribute(queue, new Attribute("JBossMQService", 
mqService));
  -         //getServer().invoke(queue, "start", new Object[]{}, new String[]{});
  -         
  -         // create the service
  -         getServer().invoke(getServiceControllerName(),
  -            "create",
  -            new Object[] {queue},
  -            new String[] {"javax.management.ObjectName"});
  -         
  -         // start the service
  -         getServer().invoke(getServiceControllerName(),
  -            "start",
  -            new Object[] {queue},
  -            new String[] {"javax.management.ObjectName"});
  -      
  -      }
  -      catch (Exception e)
  -      {
  -         log.warn("Could not create the destination: ", e);
  -         throw e;
  -      }
  +      createDestination("org.jboss.mq.server.QueueManager",
  +                        getTopicObjectName(name));
      }
      
  -   // Administration calls
  -   
  -   /**
  -    * #Description of the Method
  -    *
  -    * @param  name           Description of Parameter
  -    * @exception  Exception  Description of Exception
  -    */
      public void createTopic(String name) throws Exception
      {
  -      try
  -      {
  -         
  -         ObjectName topic= getTopicObjectName(name);
  -         getServer().createMBean("org.jboss.mq.server.TopicManager", topic);
  -         getServer().setAttribute(topic, new Attribute("JBossMQService", 
mqService));
  -         //getServer().invoke(topic, "start", new Object[]{}, new String[]{});
  -         
  -         // create the topic
  -         getServer().invoke(getServiceControllerName(),
  -            "create",
  -            new Object[] {topic},
  -            new String[] {"javax.management.ObjectName"});
  -
  -      
  -         // create the topic
  -         getServer().invoke(getServiceControllerName(),
  -            "start",
  -            new Object[] {topic},
  -            new String[] {"javax.management.ObjectName"}); 
  -      }
  -      catch (Exception e)
  -      {
  -         log.warn("Could not create the destination: ", e);
  -         throw e;
  +      createDestination("org.jboss.mq.server.TopicManager",
  +                        getTopicObjectName(name));
  +   }
  +   
  +   protected void createDestination(String type, ObjectName name) throws Exception {
  +      if (log.isDebugEnabled()) {
  +         log.debug("Attempting to create destination: " + name + "; type=" + type);
         }
  +      
  +      server.createMBean(type, name);
  +      server.setAttribute(name, new Attribute("JBossMQService", mqService));
  +
  +      serviceController.create(name);
  +      serviceController.start(name);
      }
      
  -   /**
  -    * #Description of the Method
  -    *
  -    * @param  name           Description of Parameter
  -    * @exception  Exception  Description of Exception
  -    */
      public void destroyQueue(String name) throws Exception
      {
  -      try
  -      {
  -        
  -         ObjectName queue = getQueueObjectName(name);
  -         getServer().invoke(getServiceControllerName(),
  -            "undeploy",
  -            new Object[] {queue},
  -            new String[] {"javax.management.ObjectName"});
  -         
  -         //getServer().invoke(queue, "stop", new Object[]{}, new String[]{});
  -         //getServer().unregisterMBean(queue);
  -      
  -      }
  -      catch (Exception e)
  -      {
  -         log.warn("Could not destroy the destination: ", e);
  -         throw e;
  -      }
  -   
  -   
  +      destroyDestination(getQueueObjectName(name));      
      }
      
  -   /**
  -   *  #Description of the Method
  -   *
  -   * @param  name           Description of Parameter
  -   * @exception  Exception  Description of Exception
  -   */
      public void destroyTopic(String name) throws Exception
      {
  -      try
  -      {      
  -         ObjectName topic = getTopicObjectName(name);
  -         //getServer().invoke(topic, "stop", new Object[]{}, new String[]{});
  -         //getServer().unregisterMBean(topic);
  -         getServer().invoke(getServiceControllerName(),
  -            "undeploy",
  -            new Object[] {topic},
  -            new String[] {"javax.management.ObjectName"});
  -      }
  -      catch (Exception e)
  -      {
  -         log.warn("Could not destroy the destination: ", e);
  -         throw e;
  +      destroyDestination(getTopicObjectName(name));
  +   }
  +
  +   protected void destroyDestination(ObjectName name) throws Exception
  +   {
  +      if (log.isDebugEnabled()) {
  +         log.debug("Attempting to destroy destination: " + name);
         }
  +      
  +      serviceController.stop(name);
  +      serviceController.destroy(name);
  +      serviceController.remove(name);
  +   }
  +      
  +   protected ObjectName getObjectName(MBeanServer server, ObjectName name)
  +      throws MalformedObjectNameException
  +   {
  +      // Save our object name to create destination names based on it
  +      mqService = name == null ? OBJECT_NAME : name;
  +      
  +      return mqService;
      }
      
      protected void startService() throws Exception
      {
  -      try 
  -      {
  -         PersistenceManager pm = (PersistenceManager)
  -         getServer().invoke(persistenceManager, "getInstance", 
  -            new Object[] {},
  -            new String[] {});
  -         JMSServer.initServer();//yucky kludge!
  -         jmsServer = JMSServer.getInstance();
  -         jmsServer.setPersistenceManager(pm);
  -      } catch (Exception e) 
  -      {
  -         log.error("couldn't set persistence manager on jmsserver", e);
  -      } // end of try-catch
  -      try 
  -      {
  -         StateManager sm = (StateManager)
  -         getServer().invoke(stateManager, "getInstance", 
  -            new Object[] {},
  -            new String[] {});
  -         jmsServer.setStateManager(sm);
  -      } catch (Exception e) 
  -      {
  -         log.error("couldn't set state manager on jmsserver", e);
  -      } // end of try-catch
  +      // Get a proxy to the service controller
  +      serviceController = (ServiceControllerMBean)
  +         MBeanProxy.create(ServiceControllerMBean.class,
  +                           ServiceControllerMBean.OBJECT_NAME,
  +                           server);
  +      
  +      PersistenceManager pm = (PersistenceManager)
  +         server.invoke(persistenceManager,
  +                       "getInstance", 
  +                       new Object[0],
  +                       new String[0]);
  +      
  +      JMSServer.initServer(); // yucky kludge!
  +      
  +      jmsServer = JMSServer.getInstance();
  +      jmsServer.setPersistenceManager(pm);
  +
  +      StateManager sm = (StateManager)
  +         server.invoke(stateManager,
  +                       "getInstance", 
  +                       new Object[0],
  +                       new String[0]);
  +      
  +      jmsServer.setStateManager(sm);
  +      
         jmsServer.startServer();
      }
      
  @@ -280,16 +198,11 @@
      
      private ObjectName getTopicObjectName(String name) throws 
MalformedObjectNameException
      {
  -      return new ObjectName(mqService.getDomain() + ":service=Topic,name=" + name);
  +      return new ObjectName(mqService.getDomain() + 
".destination:service=Topic,name=" + name);
      }
      
      private ObjectName getQueueObjectName(String name) throws 
MalformedObjectNameException
      {
  -      return new ObjectName(mqService.getDomain() + ":service=Queue,name=" + name);
  -   }
  -   
  -   private ObjectName getServiceControllerName() throws Exception
  -   {
  -      return new ObjectName(SERVICE_CONTROLLER_NAME);
  +      return new ObjectName(mqService.getDomain() + 
":destination:service=Queue,name=" + name);
      }
   }
  
  
  
  1.7       +6 -28     jbossmq/src/main/org/jboss/mq/server/JBossMQServiceMBean.java
  
  Index: JBossMQServiceMBean.java
  ===================================================================
  RCS file: 
/cvsroot/jboss/jbossmq/src/main/org/jboss/mq/server/JBossMQServiceMBean.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- JBossMQServiceMBean.java  3 Jan 2002 04:00:54 -0000       1.6
  +++ JBossMQServiceMBean.java  13 Feb 2002 06:38:33 -0000      1.7
  @@ -7,19 +7,21 @@
   package org.jboss.mq.server;
   
   import javax.management.ObjectName;
  +
  +import org.jboss.util.ObjectNameFactory;
   import org.jboss.system.ServiceMBean;
   
   /**
    * MBean interface for the JBossMQ JMX service.
    *
    * @author     <a href="[EMAIL PROTECTED]">Hiram Chirino</a>
  - * @see        <related>
  - * @version    $Revision: 1.6 $
  + * @version    $Revision: 1.7 $
    */
   public interface JBossMQServiceMBean
  -       extends ServiceMBean
  +   extends ServiceMBean
   {
  -   String OBJECT_NAME = "jboss.mq:service=Server";
  +   ObjectName OBJECT_NAME =
  +      ObjectNameFactory.create("jboss.mq:service=Server");
   
      JMSServer getJMSServer();
      
  @@ -37,35 +39,11 @@
   
      ObjectName getStateManager();
   
  -   /**
  -    *  #Description of the Method
  -    *
  -    * @param  name           Description of Parameter
  -    * @exception  Exception  Description of Exception
  -    */
      void createQueue(String name) throws Exception;
   
  -   /**
  -    *  #Description of the Method
  -    *
  -    * @param  name           Description of Parameter
  -    * @exception  Exception  Description of Exception
  -    */
      void createTopic(String name) throws Exception;
   
  -   /**
  -    *  #Description of the Method
  -    *
  -    * @param  name           Description of Parameter
  -    * @exception  Exception  Description of Exception
  -    */
      void destroyQueue(String name) throws Exception;
   
  -   /**
  -    *  #Description of the Method
  -    *
  -    * @param  name           Description of Parameter
  -    * @exception  Exception  Description of Exception
  -    */
      void destroyTopic(String name) throws Exception;
   }
  
  
  

_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to