You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ad...@apache.org on 2004/01/31 21:20:45 UTC

cvs commit: incubator-geronimo/modules/remoting/src/test/org/apache/geronimo/remoting JMXRemotingTest.java StartupTest.java

adc         2004/01/31 12:20:45

  Modified:    modules/remoting/src/java/org/apache/geronimo/remoting/jmx
                        MBeanServerStub.java
               modules/remoting/src/java/org/apache/geronimo/remoting/router
                        JMXRouter.java
               modules/remoting/src/test/org/apache/geronimo/remoting
                        JMXRemotingTest.java StartupTest.java
  Log:
  JMXTargets should be assigned specific JMX routers
  
  Revision  Changes    Path
  1.9       +22 -8     incubator-geronimo/modules/remoting/src/java/org/apache/geronimo/remoting/jmx/MBeanServerStub.java
  
  Index: MBeanServerStub.java
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/remoting/src/java/org/apache/geronimo/remoting/jmx/MBeanServerStub.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- MBeanServerStub.java	28 Jan 2004 05:45:23 -0000	1.8
  +++ MBeanServerStub.java	31 Jan 2004 20:20:44 -0000	1.9
  @@ -55,20 +55,20 @@
    */
   package org.apache.geronimo.remoting.jmx;
   
  -import java.util.Set;
  -import java.util.HashSet;
  -
   import org.apache.geronimo.core.service.Interceptor;
   import org.apache.geronimo.gbean.GBean;
   import org.apache.geronimo.gbean.GBeanContext;
   import org.apache.geronimo.gbean.GBeanInfo;
  +import org.apache.geronimo.gbean.GBeanInfoFactory;
   import org.apache.geronimo.gbean.GOperationInfo;
  +import org.apache.geronimo.gbean.GReferenceInfo;
   import org.apache.geronimo.gbean.jmx.GBeanMBeanContext;
   import org.apache.geronimo.proxy.ProxyContainer;
   import org.apache.geronimo.proxy.ReflexiveInterceptor;
   import org.apache.geronimo.remoting.DeMarshalingInterceptor;
  +import org.apache.geronimo.remoting.router.JMXRouter;
   import org.apache.geronimo.remoting.router.JMXTarget;
  -import org.apache.geronimo.remoting.router.AbstractInterceptorRouter;
  +
   
   /**
    * @version $Revision$ $Date$
  @@ -77,17 +77,28 @@
       private ProxyContainer serverContainer;
       private DeMarshalingInterceptor demarshaller;
       private GBeanMBeanContext context;
  +    private JMXRouter router;
   
   
       public Interceptor getRemotingEndpointInterceptor() {
           return demarshaller;
       }
   
  +    public JMXRouter getRouter() {
  +        return router;
  +    }
  +
  +    public void setRouter(JMXRouter router) {
  +        this.router = router;
  +    }
  +
       public void setGBeanContext(GBeanContext context) {
           this.context = (GBeanMBeanContext) context;
       }
   
       public void doStart() {
  +        router.register(context.getObjectName(), this);
  +
           // Setup the server side contianer..
           Interceptor firstInterceptor = new ReflexiveInterceptor(context.getServer());
           demarshaller = new DeMarshalingInterceptor(firstInterceptor, getClass().getClassLoader());
  @@ -95,6 +106,7 @@
       }
   
       public void doStop() {
  +        router.unRegister(context.getObjectName());
           serverContainer = null;
           demarshaller = null;
       }
  @@ -107,9 +119,11 @@
       public static final GBeanInfo GBEAN_INFO;
   
       static {
  -        Set operations = new HashSet();
  -        operations.add(new GOperationInfo("getRemotingEndpointInterceptor"));
  -        GBEAN_INFO = new GBeanInfo(MBeanServerStub.class.getName(), null, null, operations, null, null);
  +        GBeanInfoFactory infoFactory = new GBeanInfoFactory(MBeanServerStub.class.getName());
  +        infoFactory.addOperation(new GOperationInfo("getName"));
  +        infoFactory.addOperation(new GOperationInfo("getRemotingEndpointInterceptor"));
  +        infoFactory.addReference(new GReferenceInfo("Router", JMXRouter.class.getName()));
  +        GBEAN_INFO = infoFactory.getBeanInfo();
       }
   
       public static GBeanInfo getGBeanInfo() {
  
  
  
  1.8       +22 -7     incubator-geronimo/modules/remoting/src/java/org/apache/geronimo/remoting/router/JMXRouter.java
  
  Index: JMXRouter.java
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/remoting/src/java/org/apache/geronimo/remoting/router/JMXRouter.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- JMXRouter.java	26 Jan 2004 06:50:47 -0000	1.7
  +++ JMXRouter.java	31 Jan 2004 20:20:44 -0000	1.8
  @@ -55,15 +55,16 @@
    */
   package org.apache.geronimo.remoting.router;
   
  -import java.net.URI;
  -import javax.management.MalformedObjectNameException;
   import javax.management.ObjectName;
  +import java.net.URI;
  +import java.util.HashMap;
  +import java.util.Map;
   
   import org.apache.geronimo.core.service.Interceptor;
   import org.apache.geronimo.gbean.GBeanInfo;
   import org.apache.geronimo.gbean.GBeanInfoFactory;
  +import org.apache.geronimo.gbean.GOperationInfo;
   import org.apache.geronimo.gbean.GReferenceInfo;
  -import org.apache.geronimo.kernel.jmx.MBeanProxyFactory;
   
   /**
    * Uses JMX Object names to route the request to a JMX object that implements the
  @@ -78,6 +79,7 @@
    */
   public class JMXRouter extends AbstractInterceptorRouter {
       private SubsystemRouter subsystemRouter;
  +    private Map registered = new HashMap();
   
       public SubsystemRouter getSubsystemRouter() {
           return subsystemRouter;
  @@ -87,10 +89,21 @@
           this.subsystemRouter = subsystemRouter;
       }
   
  +    public void register(ObjectName objectName, JMXTarget target) {
  +        registered.put(objectName, target);
  +    }
  +
  +    public void unRegister(ObjectName objectName) {
  +        registered.remove(objectName);
  +    }
  +
       protected Interceptor lookupInterceptorFrom(URI to) throws Exception {
  -        ObjectName on = new ObjectName(to.getFragment());
  -        JMXTarget bean = (JMXTarget) MBeanProxyFactory.getProxy(JMXTarget.class, context.getServer(), on);
  -        return bean.getRemotingEndpointInterceptor();
  +        ObjectName objectName = new ObjectName(to.getFragment());
  +        JMXTarget bean = (JMXTarget)registered.get(objectName);
  +
  +        if (bean != null) return bean.getRemotingEndpointInterceptor();
  +
  +        throw new IllegalArgumentException("No names mbeans registered that match object name pattern: " + objectName);
       }
   
       public void doStart() {
  @@ -108,6 +121,8 @@
       static {
           GBeanInfoFactory infoFactory = new GBeanInfoFactory(JMXRouter.class.getName(), AbstractInterceptorRouter.GBEAN_INFO);
           infoFactory.addReference(new GReferenceInfo("SubsystemRouter", SubsystemRouter.class.getName()));
  +        infoFactory.addOperation(new GOperationInfo("register", new String[] {ObjectName.class.getName(), JMXTarget.class.getName()}));
  +        infoFactory.addOperation(new GOperationInfo("unRegister", new String[] {ObjectName.class.getName()}));
           GBEAN_INFO = infoFactory.getBeanInfo();
       }
   
  
  
  
  1.2       +2 -1      incubator-geronimo/modules/remoting/src/test/org/apache/geronimo/remoting/JMXRemotingTest.java
  
  Index: JMXRemotingTest.java
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/remoting/src/test/org/apache/geronimo/remoting/JMXRemotingTest.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- JMXRemotingTest.java	28 Jan 2004 05:55:39 -0000	1.1
  +++ JMXRemotingTest.java	31 Jan 2004 20:20:44 -0000	1.2
  @@ -106,6 +106,7 @@
           kernel.loadGBean(jmxRouter, gbean);
   
           gbean = new GBeanMBean("org.apache.geronimo.remoting.jmx.MBeanServerStub");
  +        gbean.setReferencePatterns("Router", Collections.singleton(jmxRouter));
           serverStub = new ObjectName("geronimo.remoting:target=MBeanServerStub");
           kernel.loadGBean(serverStub, gbean);
   
  
  
  
  1.3       +2 -1      incubator-geronimo/modules/remoting/src/test/org/apache/geronimo/remoting/StartupTest.java
  
  Index: StartupTest.java
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/remoting/src/test/org/apache/geronimo/remoting/StartupTest.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- StartupTest.java	25 Jan 2004 21:07:04 -0000	1.2
  +++ StartupTest.java	31 Jan 2004 20:20:44 -0000	1.3
  @@ -98,6 +98,7 @@
           kernel.loadGBean(registeryRouter, gbean);
   
           gbean = new GBeanMBean("org.apache.geronimo.remoting.jmx.MBeanServerStub");
  +        gbean.setReferencePatterns("Router", Collections.singleton(jmxRouter));
           ObjectName serverStub = new ObjectName("geronimo.remoting:target=MBeanServerStub");
           kernel.loadGBean(serverStub, gbean);