costin 2003/01/16 13:38:25 Modified: catalina/src/share/org/apache/catalina/core StandardContext.java Log: - remove unused imports - converted to commons-logging - Implement the JSR77 "servlets" attribute ( required for WebModule ) - Use JSR77 name for the context. The old name is still available, until someone updates the admin to use the new name. Note that the last 2 components of the name default to "none", if tomcat is run inside a J2EEserver, the integration code will need to set the name of the server and the name of the application for the context. Revision Changes Path 1.13 +65 -29 jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/StandardContext.java Index: StandardContext.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/StandardContext.java,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- StandardContext.java 8 Dec 2002 13:42:09 -0000 1.12 +++ StandardContext.java 16 Jan 2003 21:38:25 -0000 1.13 @@ -69,48 +69,30 @@ import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; -import java.net.URL; import java.util.Iterator; import java.util.TreeMap; import java.util.Hashtable; import java.util.Stack; -import java.util.Enumeration; -import java.util.StringTokenizer; import javax.servlet.FilterConfig; import javax.servlet.ServletContext; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.ServletException; import javax.servlet.ServletRequestListener; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import javax.naming.NamingException; -import javax.naming.InitialContext; -import javax.naming.Reference; -import javax.naming.StringRefAddr; -import javax.naming.NamingEnumeration; -import javax.naming.Binding; -import javax.naming.StringRefAddr; import javax.naming.directory.DirContext; -import org.apache.naming.NamingContext; +import javax.management.ObjectName; import org.apache.naming.ContextBindings; -import org.apache.naming.ContextAccessController; -import org.apache.naming.EjbRef; -import org.apache.naming.ResourceRef; -import org.apache.naming.ResourceEnvRef; -import org.apache.naming.TransactionRef; import org.apache.naming.resources.BaseDirContext; import org.apache.naming.resources.FileDirContext; import org.apache.naming.resources.ProxyDirContext; import org.apache.naming.resources.WARDirContext; import org.apache.naming.resources.DirContextURLStreamHandler; -import org.apache.catalina.Cluster; import org.apache.catalina.Container; import org.apache.catalina.ContainerListener; import org.apache.catalina.Context; import org.apache.catalina.Host; import org.apache.catalina.Globals; -import org.apache.catalina.HttpRequest; import org.apache.catalina.InstanceListener; import org.apache.catalina.Lifecycle; import org.apache.catalina.LifecycleEvent; @@ -139,7 +121,6 @@ import org.apache.catalina.deploy.ResourceParams; import org.apache.catalina.deploy.SecurityCollection; import org.apache.catalina.deploy.SecurityConstraint; -import org.apache.catalina.loader.StandardClassLoader; import org.apache.catalina.loader.WebappLoader; import org.apache.catalina.session.StandardManager; import org.apache.catalina.util.CharsetMapper; @@ -147,6 +128,9 @@ import org.apache.catalina.util.RequestUtil; import org.apache.tomcat.util.log.SystemLogHandler; +import org.apache.commons.modeler.Registry; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; /** * Standard implementation of the <b>Context</b> interface. Each @@ -160,7 +144,10 @@ public class StandardContext extends ContainerBase - implements Context { + implements Context + { + private static Log log = LogFactory.getLog(StandardContext.class); + // ----------------------------------------------------------- Constructors @@ -512,6 +499,7 @@ */ private DirContext webappResources = null; + private ArrayList wrappers=new ArrayList(); // ----------------------------------------------------- Context Properties @@ -874,7 +862,7 @@ String loginPage = config.getLoginPage(); if ((loginPage != null) && !loginPage.startsWith("/")) { if (isServlet22()) { - log(sm.getString("standardContext.loginConfig.loginWarning", + log.info(sm.getString("standardContext.loginConfig.loginWarning", loginPage)); config.setLoginPage("/" + loginPage); } else { @@ -886,7 +874,7 @@ String errorPage = config.getErrorPage(); if ((errorPage != null) && !errorPage.startsWith("/")) { if (isServlet22()) { - log(sm.getString("standardContext.loginConfig.errorWarning", + log.info(sm.getString("standardContext.loginConfig.errorWarning", errorPage)); config.setErrorPage("/" + errorPage); } else { @@ -1367,7 +1355,7 @@ String jspFile = wrapper.getJspFile(); if ((jspFile != null) && !jspFile.startsWith("/")) { if (isServlet22()) { - log(sm.getString("standardContext.wrapper.warning", jspFile)); + log.info(sm.getString("standardContext.wrapper.warning", jspFile)); wrapper.setJspFile("/" + jspFile); } else { throw new IllegalArgumentException @@ -1469,7 +1457,7 @@ String location = errorPage.getLocation(); if ((location != null) && !location.startsWith("/")) { if (isServlet22()) { - log(sm.getString("standardContext.errorPage.warning", + log.info(sm.getString("standardContext.errorPage.warning", location)); errorPage.setLocation("/" + location); } else { @@ -1886,6 +1874,7 @@ public Wrapper createWrapper() { Wrapper wrapper = new StandardWrapper(); + wrappers.add(wrapper); synchronized (instanceListeners) { for (int i = 0; i < instanceListeners.length; i++) { @@ -3634,6 +3623,7 @@ if (debug >= 1) log("Starting"); + registerJMX(); // Notify our interested LifecycleListeners lifecycle.fireLifecycleEvent(BEFORE_START_EVENT, null); @@ -4354,5 +4344,51 @@ return ok; } + + // -------------------- JMX methods -------------------- + + /** JSR77 servlets attribute + * + * @return list of all servlets ( we know about ) + */ + public ObjectName[] getServlets() { + int size=wrappers.size(); + ObjectName result[]=new ObjectName[size]; + for( int i=0; i< size; i++ ) { + result[i]=((StandardWrapper)wrappers.get(i)).getObjectName(); + } + return result; + } + + private void registerJMX() { + String onameStr=null; + try { + if( oname==null || oname.getKeyProperty("WebModule")==null ) { + ContainerBase ctx=(ContainerBase)parent; + String pathName=getName(); + String hostName=getParent().getName(); + String name= ((hostName==null)? "DEFAULT" : hostName) + + (("".equals(pathName))?"/":pathName ); + + onameStr="j2eeType=WebModule,name=" + name + + ctx.getJSR77Suffix(); + if( log.isDebugEnabled()) + log.debug("Registering " + onameStr ); + + Registry.getRegistry().registerComponent(this, + ctx.getDomain(), + "StandardContext", onameStr); + } + for( Iterator it=wrappers.iterator(); it.hasNext() ; ) { + StandardWrapper wrapper=(StandardWrapper)it.next(); + // XXX prevent duplicated registration + wrapper.registerJMX( this, wrapper ); + } + } catch( Exception ex ) { + log.info("Error registering context with jmx " + this + " " + + onameStr + " " + ex.toString() ); + } + } + }
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>