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]