costin 2003/03/16 23:37:32 Modified: catalina/src/share/org/apache/catalina/loader WebappLoader.java Log: Add registration code Revision Changes Path 1.10 +79 -2 jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/loader/WebappLoader.java Index: WebappLoader.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/loader/WebappLoader.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- WebappLoader.java 12 Mar 2003 06:33:37 -0000 1.9 +++ WebappLoader.java 17 Mar 2003 07:37:32 -0000 1.10 @@ -86,6 +86,10 @@ import javax.naming.NameClassPair; import javax.naming.NamingEnumeration; import javax.naming.directory.DirContext; +import javax.management.MBeanRegistration; +import javax.management.ObjectName; +import javax.management.MBeanServer; +import javax.management.MalformedObjectNameException; import org.apache.naming.resources.Resource; import org.apache.naming.resources.DirContextURLStreamHandler; import org.apache.naming.resources.DirContextURLStreamHandlerFactory; @@ -99,10 +103,13 @@ import org.apache.catalina.LifecycleListener; import org.apache.catalina.Loader; import org.apache.catalina.Logger; +import org.apache.catalina.core.ContainerBase; +import org.apache.catalina.core.StandardContext; import org.apache.catalina.util.LifecycleSupport; import org.apache.catalina.util.StringManager; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.commons.modeler.Registry; /** @@ -124,7 +131,7 @@ */ public class WebappLoader - implements Lifecycle, Loader, PropertyChangeListener, Runnable { + implements Lifecycle, Loader, PropertyChangeListener, Runnable, MBeanRegistration { // ----------------------------------------------------------- Constructors @@ -664,6 +671,41 @@ } + private boolean initialized=false; + + public void init() { + initialized=true; + + if( oname==null ) { + // not registered yet - standalone or API + if( container instanceof StandardContext) { + // Register ourself. The container must be a webapp + try { + StandardContext ctx=(StandardContext)container; + oname=new ObjectName(ctx.getDomain() + ":type=Loader,path=" + + ctx.getPath() + ",host=" + ctx.getParent().getName()); + Registry.getRegistry().registerComponent(this, oname, null); + controller=oname; + } catch (Exception e) { + log.error("Error registering loader", e ); + } + } + } + + if( container == null ) { + // JMX created the loader + // TODO + + } + } + + public void destroy() { + if( controller==oname ) { + // Self-registration, undo it + Registry.getRegistry().unregisterComponent(oname); + } + + } /** * Start this component, initializing our associated class loader. @@ -672,6 +714,7 @@ */ public void start() throws LifecycleException { // Validate and update our current component state + if( ! initialized ) init(); if (started) throw new LifecycleException (sm.getString("webappLoader.alreadyStarted")); @@ -769,6 +812,8 @@ DirContextURLStreamHandler.unbind((ClassLoader) classLoader); classLoader = null; + destroy(); + } @@ -1419,4 +1464,36 @@ private static org.apache.commons.logging.Log log= org.apache.commons.logging.LogFactory.getLog( WebappLoader.class ); + + private ObjectName oname; + private MBeanServer mserver; + private String domain; + private ObjectName controller; + + public ObjectName preRegister(MBeanServer server, + ObjectName name) throws Exception { + oname=name; + mserver=server; + domain=name.getDomain(); + + return name; + } + + public void postRegister(Boolean registrationDone) { + } + + public void preDeregister() throws Exception { + } + + public void postDeregister() { + } + + public ObjectName getController() { + return controller; + } + + public void setController(ObjectName controller) { + this.controller = controller; + } + }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]