costin      2003/02/12 14:06:33

  Modified:    catalina/src/share/org/apache/catalina/mbeans
                        MBeanUtils.java
  Log:
  Add registration for servlet wrappers and support for jsr77-like names - all the
  code is optional and conditional on a flag. If the flag is not set - nothing
  will happen ( or change )
  
  Revision  Changes    Path
  1.47      +114 -9    
jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/mbeans/MBeanUtils.java
  
  Index: MBeanUtils.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/mbeans/MBeanUtils.java,v
  retrieving revision 1.46
  retrieving revision 1.47
  diff -u -r1.46 -r1.47
  --- MBeanUtils.java   22 Nov 2002 04:44:10 -0000      1.46
  +++ MBeanUtils.java   12 Feb 2003 22:06:33 -0000      1.47
  @@ -77,8 +77,8 @@
   import javax.management.OperationsException;
   import javax.management.modelmbean.InvalidTargetObjectTypeException;
   import javax.management.modelmbean.ModelMBean;
  +
   import org.apache.catalina.Connector;
  -import org.apache.catalina.Contained;
   import org.apache.catalina.Container;
   import org.apache.catalina.Context;
   import org.apache.catalina.DefaultContext;
  @@ -98,6 +98,8 @@
   import org.apache.catalina.User;
   import org.apache.catalina.UserDatabase;
   import org.apache.catalina.Valve;
  +import org.apache.catalina.Wrapper;
  +import org.apache.catalina.Contained;
   import org.apache.catalina.connector.http.HttpConnector;
   import org.apache.catalina.core.StandardService;
   import org.apache.catalina.deploy.ContextEnvironment;
  @@ -166,6 +168,7 @@
        */
       private static MBeanServer mserver = createServer();
   
  +    static boolean jsr77Names=false;
   
       // --------------------------------------------------------- Static Methods
   
  @@ -258,11 +261,33 @@
           ModelMBean mbean = managed.createMBean(context);
           ObjectName oname = createObjectName(domain, context);
           mserver.registerMBean(mbean, oname);
  +        if( jsr77Names ) {
  +            oname = createObjectName77(domain, context);
  +            mserver.registerMBean(mbean, oname);
  +        }
  +        return (mbean);
  +    }
  +
  +    public static ModelMBean createMBean(Wrapper wrapper)
  +        throws Exception {
  +
  +        String mname = createManagedName(wrapper);
  +        ManagedBean managed = registry.findManagedBean(mname);
  +        if (managed == null) {
  +            Exception e = new Exception("ManagedBean is not found with "+mname);
  +            throw new MBeanException(e);
  +        }
  +        String domain = managed.getDomain();
  +        if (domain == null)
  +            domain = mserver.getDefaultDomain();
  +        ModelMBean mbean = managed.createMBean(wrapper);
  +        ObjectName oname = createObjectName(domain, wrapper);
  +        mserver.registerMBean(mbean, oname);
           return (mbean);
   
       }
   
  -    
  +
       /**
        * Create, register, and return an MBean for this
        * <code>ContextEnvironment</code> object.
  @@ -563,6 +588,9 @@
               domain = mserver.getDefaultDomain();
           ModelMBean mbean = managed.createMBean(factory);
           ObjectName oname = createObjectName(domain, factory);
  +        if( mserver.isRegistered(oname)) {
  +            mserver.unregisterMBean(oname);
  +        }
           mserver.registerMBean(mbean, oname);
           return (mbean);
   
  @@ -904,7 +932,57 @@
   
       }
   
  -    
  +    public static ObjectName createObjectName77(String domain,
  +                                                Context context)
  +        throws MalformedObjectNameException {
  +
  +        ObjectName name = null;
  +        Host host = (Host)context.getParent();
  +        Service service = ((Engine)host.getParent()).getService();
  +        String path = context.getPath();
  +        if (path.length() < 1)
  +            path = "/";
  +        String localName= "//" +
  +                ((host.getName()==null)? "DEFAULT" : host.getName()) + path;
  +        name = new ObjectName(domain + ":j2eeType=WebModule,name=" +
  +                              localName + ",j2eeApplication=none,j2eeServer=none");
  +        return (name);
  +    }
  +
  +    /**
  +     * Create an <code>ObjectName</code> for this
  +     * <code>Context</code> object.
  +     *
  +     * @param domain Domain in which this name is to be created
  +     * @param context The Context to be named
  +     *
  +     * @exception MalformedObjectNameException if a name cannot be created
  +     */
  +    public static ObjectName createObjectName(String domain,
  +                                              Wrapper wrapper)
  +            throws MalformedObjectNameException {
  +
  +        ObjectName name = null;
  +        Context context=(Context)wrapper.getParent();
  +        Host host = (Host)context.getParent();
  +        Service service = ((Engine)host.getParent()).getService();
  +        String sname=wrapper.getJspFile();
  +        if( sname==null ) {
  +            sname=wrapper.getName();
  +        }
  +        String path = context.getPath();
  +        if (path.length() < 1)
  +            path = "/";
  +        String hostName=host.getName();
  +        String webMod="//" + ((hostName==null)? "DEFAULT" :hostName ) + path;
  +        name = new ObjectName(domain + ":j2eeType=Servlet,name=" +
  +                sname + ",WebModule=" +
  +                webMod + ",J2EEAppilication=none,J2EEServer=none");
  +
  +        return (name);
  +
  +    }
  +
       /**
        * Create an <code>ObjectName</code> for this
        * <code>Service</code> object.
  @@ -1726,7 +1804,10 @@
               domain = mserver.getDefaultDomain();
           ObjectName oname = createObjectName(domain, context);
           mserver.unregisterMBean(oname);
  -
  +        if( jsr77Names ) {
  +            oname = createObjectName77(domain, context);
  +            mserver.unregisterMBean(oname);
  +        }
       }
   
       
  @@ -1754,7 +1835,31 @@
   
       }
       
  -    
  +    /**
  +     * Deregister the MBean for this
  +     * <code>Wrapper</code> object.
  +     *
  +     * @param wrapper The Wrapper to be managed
  +     *
  +     * @exception Exception if an MBean cannot be deregistered
  +     */
  +    public static void destroyMBean(Wrapper wrapper)
  +        throws Exception {
  +
  +        String mname = createManagedName(wrapper);
  +        ManagedBean managed = registry.findManagedBean(mname);
  +        if (managed == null) {
  +            return;
  +        }
  +        String domain = managed.getDomain();
  +        if (domain == null)
  +            domain = mserver.getDefaultDomain();
  +        ObjectName oname = createObjectName(domain, wrapper);
  +        mserver.unregisterMBean(oname);
  +
  +    }
  +
  +
       /**
        * Deregister the MBean for this
        * <code>ContextResource</code> object.
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to