costin 2003/02/18 14:51:40 Modified: coyote/src/java/org/apache/coyote/tomcat4 CoyoteAdapter.java CoyoteConnector.java Log: Merged few changes from 5.0 to enable JMX on thread pools and connector. This is in the HEAD - jk and http adapters already have the dependency on JMX and modeler. Note that the code is called only if the connector is registered with JMX - if not, nothing will happen. Revision Changes Path 1.14 +4 -34 jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat4/CoyoteAdapter.java Index: CoyoteAdapter.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat4/CoyoteAdapter.java,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- CoyoteAdapter.java 10 Dec 2002 08:43:21 -0000 1.13 +++ CoyoteAdapter.java 18 Feb 2003 22:51:39 -0000 1.14 @@ -64,53 +64,23 @@ package org.apache.coyote.tomcat4; -import java.io.BufferedInputStream; -import java.io.EOFException; -import java.io.InterruptedIOException; -import java.io.InputStream; import java.io.IOException; -import java.io.OutputStream; -import java.net.InetAddress; -import java.net.Socket; -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.Iterator; -import java.util.Locale; -import java.util.StringTokenizer; -import java.util.TreeMap; -import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import org.apache.tomcat.util.buf.ByteChunk; -import org.apache.tomcat.util.buf.HexUtils; import org.apache.tomcat.util.buf.MessageBytes; import org.apache.tomcat.util.http.Cookies; import org.apache.tomcat.util.http.ServerCookie; import org.apache.coyote.ActionCode; -import org.apache.coyote.ActionHook; import org.apache.coyote.Adapter; -import org.apache.coyote.InputBuffer; -import org.apache.coyote.OutputBuffer; import org.apache.coyote.Request; import org.apache.coyote.Response; -import org.apache.catalina.Connector; -import org.apache.catalina.Container; import org.apache.catalina.Globals; -import org.apache.catalina.HttpRequest; -import org.apache.catalina.HttpResponse; -import org.apache.catalina.Lifecycle; -import org.apache.catalina.LifecycleEvent; -import org.apache.catalina.LifecycleException; -import org.apache.catalina.LifecycleListener; import org.apache.catalina.Logger; -import org.apache.catalina.util.LifecycleSupport; -import org.apache.catalina.util.RequestUtil; import org.apache.catalina.util.StringManager; -import org.apache.catalina.util.StringParser; /** 1.23 +85 -59 jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat4/CoyoteConnector.java Index: CoyoteConnector.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat4/CoyoteConnector.java,v retrieving revision 1.22 retrieving revision 1.23 diff -u -r1.22 -r1.23 --- CoyoteConnector.java 10 Feb 2003 09:57:37 -0000 1.22 +++ CoyoteConnector.java 18 Feb 2003 22:51:39 -0000 1.23 @@ -65,36 +65,15 @@ package org.apache.coyote.tomcat4; -import java.io.IOException; -import java.net.InetAddress; -import java.net.ServerSocket; -import java.net.Socket; -import java.net.UnknownHostException; -import java.security.AccessControlException; -import java.util.Stack; import java.util.Vector; -import java.util.Enumeration; -import java.security.KeyStoreException; -import java.security.NoSuchAlgorithmException; -import java.security.cert.CertificateException; -import java.security.UnrecoverableKeyException; -import java.security.KeyManagementException; - import org.apache.tomcat.util.IntrospectionUtils; -import org.apache.coyote.ActionCode; -import org.apache.coyote.ActionHook; import org.apache.coyote.Adapter; -import org.apache.coyote.InputBuffer; -import org.apache.coyote.OutputBuffer; import org.apache.coyote.ProtocolHandler; import org.apache.catalina.Connector; import org.apache.catalina.Container; -import org.apache.catalina.HttpRequest; -import org.apache.catalina.HttpResponse; import org.apache.catalina.Lifecycle; -import org.apache.catalina.LifecycleEvent; import org.apache.catalina.LifecycleException; import org.apache.catalina.LifecycleListener; import org.apache.catalina.Logger; @@ -105,6 +84,11 @@ import org.apache.catalina.net.ServerSocketFactory; import org.apache.catalina.util.LifecycleSupport; import org.apache.catalina.util.StringManager; +import org.apache.commons.modeler.Registry; + +import javax.management.MBeanRegistration; +import javax.management.ObjectName; +import javax.management.MBeanServer; /** @@ -115,9 +99,8 @@ * @version $Revision$ $Date$ */ - public final class CoyoteConnector - implements Connector, Lifecycle { + implements Connector, Lifecycle, MBeanRegistration { // ----------------------------------------------------- Instance Variables @@ -328,7 +311,7 @@ * Coyote Protocol handler class name. * Defaults to the Coyote HTTP/1.1 protocolHandler. */ - private String protocolHandlerClassName = + private String protocolHandlerClassName = "org.apache.coyote.http11.Http11Protocol"; @@ -531,7 +514,7 @@ /** * Set the value of compression. - * + * * @param compression The new compression value, which can be "on", "off" * or "force" */ @@ -710,9 +693,9 @@ /** - * Set the class name of the Coyote protocol handler which will be used + * Set the class name of the Coyote protocol handler which will be used * by the connector. - * + * * @param protocolHandlerClassName The new class name */ public void setProtocolHandlerClassName(String protocolHandlerClassName) { @@ -803,8 +786,8 @@ /** * Set the flag to specify upload time-out behavior. * - * @param isDisabled If <code>true</code>, then the <code>timeout</code> - * parameter is ignored. If <code>false</code>, then the + * @param isDisabled If <code>true</code>, then the <code>timeout</code> + * parameter is ignored. If <code>false</code>, then the * <code>timeout</code> parameter is used to control uploads. */ public void setDisableUploadTimeout( boolean isDisabled ) { @@ -908,7 +891,7 @@ /** * Set the value of the Uri validation flag. - * + * * @param useURIValidationHack The new flag value */ public void setUseURIValidationHack(boolean useURIValidationHack) { @@ -1003,7 +986,7 @@ /** - * Get the lifecycle listeners associated with this lifecycle. If this + * Get the lifecycle listeners associated with this lifecycle. If this * Lifecycle has no listeners registered, a zero-length array is returned. */ public LifecycleListener[] findLifecycleListeners() { @@ -1032,7 +1015,7 @@ throws LifecycleException { if (initialized) - throw new LifecycleException + throw new LifecycleException (sm.getString("coyoteConnector.alreadyInitialized")); this.initialized = true; @@ -1052,64 +1035,64 @@ } protocolHandler.setAdapter(adapter); - IntrospectionUtils.setProperty(protocolHandler, "jkHome", + IntrospectionUtils.setProperty(protocolHandler, "jkHome", System.getProperty("catalina.base")); // Set attributes IntrospectionUtils.setProperty(protocolHandler, "port", "" + port); - IntrospectionUtils.setProperty(protocolHandler, "maxThreads", + IntrospectionUtils.setProperty(protocolHandler, "maxThreads", "" + maxProcessors); - IntrospectionUtils.setProperty(protocolHandler, "backlog", + IntrospectionUtils.setProperty(protocolHandler, "backlog", "" + acceptCount); - IntrospectionUtils.setProperty(protocolHandler, "tcpNoDelay", + IntrospectionUtils.setProperty(protocolHandler, "tcpNoDelay", "" + tcpNoDelay); IntrospectionUtils.setProperty(protocolHandler, "soLinger", "" + connectionLinger); - IntrospectionUtils.setProperty(protocolHandler, "soTimeout", + IntrospectionUtils.setProperty(protocolHandler, "soTimeout", "" + connectionTimeout); - IntrospectionUtils.setProperty(protocolHandler, "timeout", + IntrospectionUtils.setProperty(protocolHandler, "timeout", "" + connectionTimeout); - IntrospectionUtils.setProperty(protocolHandler, "disableUploadTimeout", + IntrospectionUtils.setProperty(protocolHandler, "disableUploadTimeout", "" + disableUploadTimeout); IntrospectionUtils.setProperty(protocolHandler, "maxKeepAliveRequests", "" + maxKeepAliveRequests); - IntrospectionUtils.setProperty(protocolHandler, "compression", + IntrospectionUtils.setProperty(protocolHandler, "compression", compression); if (address != null) { - IntrospectionUtils.setProperty(protocolHandler, "address", + IntrospectionUtils.setProperty(protocolHandler, "address", address); } // Configure secure socket factory if (factory instanceof CoyoteServerSocketFactory) { - IntrospectionUtils.setProperty(protocolHandler, "secure", + IntrospectionUtils.setProperty(protocolHandler, "secure", "" + true); - CoyoteServerSocketFactory ssf = + CoyoteServerSocketFactory ssf = (CoyoteServerSocketFactory) factory; - IntrospectionUtils.setProperty(protocolHandler, "algorithm", + IntrospectionUtils.setProperty(protocolHandler, "algorithm", ssf.getAlgorithm()); if (ssf.getClientAuth()) { - IntrospectionUtils.setProperty(protocolHandler, "clientauth", + IntrospectionUtils.setProperty(protocolHandler, "clientauth", "" + ssf.getClientAuth()); } - IntrospectionUtils.setProperty(protocolHandler, "keystore", + IntrospectionUtils.setProperty(protocolHandler, "keystore", ssf.getKeystoreFile()); - IntrospectionUtils.setProperty(protocolHandler, "randomfile", + IntrospectionUtils.setProperty(protocolHandler, "randomfile", ssf.getRandomFile()); - IntrospectionUtils.setProperty(protocolHandler, "rootfile", + IntrospectionUtils.setProperty(protocolHandler, "rootfile", ssf.getRootFile()); - - IntrospectionUtils.setProperty(protocolHandler, "keypass", + + IntrospectionUtils.setProperty(protocolHandler, "keypass", ssf.getKeystorePass()); - IntrospectionUtils.setProperty(protocolHandler, "keytype", + IntrospectionUtils.setProperty(protocolHandler, "keytype", ssf.getKeystoreType()); - IntrospectionUtils.setProperty(protocolHandler, "protocol", + IntrospectionUtils.setProperty(protocolHandler, "protocol", ssf.getProtocol()); - IntrospectionUtils.setProperty(protocolHandler, - "sSLImplementation", + IntrospectionUtils.setProperty(protocolHandler, + "sSLImplementation", ssf.getSSLImplementation()); } else { - IntrospectionUtils.setProperty(protocolHandler, "secure", + IntrospectionUtils.setProperty(protocolHandler, "secure", "" + false); } @@ -1137,6 +1120,21 @@ lifecycle.fireLifecycleEvent(START_EVENT, null); started = true; + // We can't register earlier - the JMX registration of this happens + // in Server.start callback + if( this.oname != null ) { + // We are registred - register the adapter as well. + try { + Registry.getRegistry().registerComponent(protocolHandler, + this.domain, "protocolHandler", + "type=protocolHandler,className=" + protocolHandlerClassName); + } catch( Exception ex ) { + ex.printStackTrace(); + } + } else { + log( "Coyote can't register jmx for protocol"); + } + try { protocolHandler.start(); } catch (Exception e) { @@ -1172,5 +1170,33 @@ } + protected String domain; + protected ObjectName oname; + protected MBeanServer mserver; + + public ObjectName getObjectName() { + return oname; + } + + public String getDomain() { + return domain; + } + + 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() { + } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]