[jboss-cvs] jboss-seam/src/ioc/org/jboss/seam/ioc/microcontainer ...

Ales Justin ales.justin at genera-lynx.com
Fri Mar 2 13:56:07 EST 2007


  User: alesj   
  Date: 07/03/02 13:56:07

  Modified:    src/ioc/org/jboss/seam/ioc/microcontainer 
                        ControllerBridgeComponent.java
  Log:
  Bridge registry via MBean server + ServiceController.
  
  Revision  Changes    Path
  1.4       +38 -5     jboss-seam/src/ioc/org/jboss/seam/ioc/microcontainer/ControllerBridgeComponent.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: ControllerBridgeComponent.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/ioc/org/jboss/seam/ioc/microcontainer/ControllerBridgeComponent.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -b -r1.3 -r1.4
  --- ControllerBridgeComponent.java	2 Mar 2007 16:55:30 -0000	1.3
  +++ ControllerBridgeComponent.java	2 Mar 2007 18:56:07 -0000	1.4
  @@ -23,9 +23,10 @@
   
   import java.io.Serializable;
   import javax.management.MBeanServer;
  -import javax.management.MBeanServerFactory;
   import javax.management.ObjectName;
   
  +import org.jboss.mx.util.MBeanProxyExt;
  +import org.jboss.mx.util.MBeanServerLocator;
   import org.jboss.seam.Component;
   import static org.jboss.seam.InterceptionType.NEVER;
   import org.jboss.seam.ScopeType;
  @@ -33,8 +34,11 @@
   import org.jboss.seam.annotations.Destroy;
   import org.jboss.seam.annotations.Install;
   import org.jboss.seam.annotations.Intercept;
  +import org.jboss.seam.annotations.Logger;
   import org.jboss.seam.annotations.Scope;
   import org.jboss.seam.annotations.Startup;
  +import org.jboss.seam.log.Log;
  +import org.jboss.system.ServiceControllerMBean;
   
   /**
    * Notifies Seam components in current underlying Microcontainer Controller.
  @@ -52,6 +56,7 @@
       /** The serialVersionUID */
       private static final long serialVersionUID = 1L;
   
  +    @Logger private Log log;
       private ObjectName objectName;
   
       protected ObjectName createObjectName(Component component) throws Exception
  @@ -59,14 +64,38 @@
           return new ObjectName("jboss-seam:name=" + getClass().getSimpleName() + "." + component.getName());
       }
   
  +    protected void handleJMXRegistration(boolean register) throws Exception
  +    {
  +        MBeanServer server = MBeanServerLocator.locateJBoss();
  +        if (server == null)
  +            throw new IllegalArgumentException("Not running in JBoss app. server [currently only supporting]");
  +        ServiceControllerMBean serviceController = (ServiceControllerMBean)MBeanProxyExt.create(ServiceControllerMBean.class, ServiceControllerMBean.OBJECT_NAME);
  +        if (register)
  +        {
  +            server.registerMBean(this, objectName);
  +            // we want it to be installed
  +            serviceController.start(objectName);
  +        }
  +        else
  +        {
  +            // destroy it
  +            serviceController.destroy(objectName);
  +            serviceController.remove(objectName);
  +            server.unregisterMBean(objectName);
  +        }
  +    }
  +
       @Create
       public void create(Component component)
       {
  +        if (log.isDebugEnabled())
  +        {
  +            log.debug("Creating notification MC component ...");
  +        }
           try
           {
  -            MBeanServer server = MBeanServerFactory.createMBeanServer();
               objectName = createObjectName(component);
  -            server.registerMBean(this, objectName);
  +            handleJMXRegistration(true);
           }
           catch (Throwable t)
           {
  @@ -77,8 +106,12 @@
       @Destroy
       public void destroy() throws Exception
       {
  -        MBeanServer server = MBeanServerFactory.createMBeanServer();
  -        server.unregisterMBean(objectName);
  +        handleJMXRegistration(false);
  +        objectName = null;
  +        if (log.isDebugEnabled())
  +        {
  +            log.debug("Notification MC component destroyed ...");
  +        }
       }
   
   }
  
  
  



More information about the jboss-cvs-commits mailing list