billbarker 2004/03/08 21:39:15 Modified: jk/java/org/apache/jk/common JkMX.java Log: Fix problems with finding the Adapter in TC 5. In TC 5, jmx.jar is in a different CL than jmx-tools.jar, so you can't use createMBean w/o specifying the CL. TC 3 & 4 should work much as before. Revision Changes Path 1.21 +103 -110 jakarta-tomcat-connectors/jk/java/org/apache/jk/common/JkMX.java Index: JkMX.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/jk/java/org/apache/jk/common/JkMX.java,v retrieving revision 1.20 retrieving revision 1.21 diff -u -r1.20 -r1.21 --- JkMX.java 24 Feb 2004 08:48:42 -0000 1.20 +++ JkMX.java 9 Mar 2004 05:39:14 -0000 1.21 @@ -36,96 +36,96 @@ public class JkMX extends JkHandler { MBeanServer mserver; - private boolean enabled=false; - private int httpport=-1; - private String httphost="localhost"; - private int jrmpport=-1; - private String jrmphost="localhost"; + private boolean enabled=false; + private int httpport=-1; + private String httphost="localhost"; + private int jrmpport=-1; + private String jrmphost="localhost"; - public JkMX() - { + public JkMX() { } /* -------------------- Public methods -------------------- */ - /** Enable the MX4J adapters (new way) - */ - public void setEnabled(boolean b) { - enabled=b; - } - - public boolean getEnabled() { - return enabled; - } - - /** Enable the MX4J adapters (old way, compatible) - */ - public void setPort(int i) { - enabled=(i != -1); - } - - public int getPort() { - return ((httpport != -1) ? httpport : jrmpport); - } - - /** Enable the MX4J HTTP internal adapter - */ - public void setHttpPort( int i ) { - httpport=i; - } - - public int getHttpPort() { - return httpport; - } - - public void setHttpHost(String host ) { - this.httphost=host; - } - - public String getHttpHost() { - return httphost; - } - - /** Enable the MX4J JRMP internal adapter - */ - public void setJrmpPort( int i ) { - jrmpport=i; - } - - public int getJrmpPort() { - return jrmpport; - } - - public void setJrmpHost(String host ) { - this.jrmphost=host; - } - - public String getJrmpHost() { - return jrmphost; - } + /** Enable the MX4J adapters (new way) + */ + public void setEnabled(boolean b) { + enabled=b; + } + + public boolean getEnabled() { + return enabled; + } + + /** Enable the MX4J adapters (old way, compatible) + */ + public void setPort(int i) { + enabled=(i != -1); + } + + public int getPort() { + return ((httpport != -1) ? httpport : jrmpport); + } + + /** Enable the MX4J HTTP internal adapter + */ + public void setHttpPort( int i ) { + httpport=i; + } + + public int getHttpPort() { + return httpport; + } + + public void setHttpHost(String host ) { + this.httphost=host; + } + + public String getHttpHost() { + return httphost; + } + + /** Enable the MX4J JRMP internal adapter + */ + public void setJrmpPort( int i ) { + jrmpport=i; + } + + public int getJrmpPort() { + return jrmpport; + } + + public void setJrmpHost(String host ) { + this.jrmphost=host; + } + + public String getJrmpHost() { + return jrmphost; + } /* ==================== Start/stop ==================== */ - ObjectName httpServerName=null; - ObjectName jrmpServerName=null; + ObjectName httpServerName=null; + ObjectName jrmpServerName=null; /** Initialize the worker. After this call the worker will be * ready to accept new requests. */ public void loadAdapter() throws IOException { - boolean httpAdapterLoaded = false; - boolean jrmpAdapterLoaded = false; - + boolean httpAdapterLoaded = false; + boolean jrmpAdapterLoaded = false; + if ((httpport != -1) && classExists("mx4j.adaptor.http.HttpAdaptor")) { try { - httpServerName = new ObjectName("Http:name=HttpAdaptor"); - mserver.createMBean("mx4j.adaptor.http.HttpAdaptor", httpServerName, null); + httpServerName = registerObject("mx4j.adaptor.http.HttpAdaptor", + "Http:name=HttpAdaptor"); + + if( httphost!=null ) mserver.setAttribute(httpServerName, new Attribute("Host", httphost)); mserver.setAttribute(httpServerName, new Attribute("Port", new Integer(httpport))); - ObjectName processorName = new ObjectName("Http:name=XSLTProcessor"); - mserver.createMBean("mx4j.adaptor.http.XSLTProcessor", processorName, null); - + ObjectName processorName = registerObject("mx4j.adaptor.http.XSLTProcessor", + "Http:name=XSLTProcessor"); //mserver.setAttribute(processorName, new Attribute("File", "/opt/41/server/lib/openjmx-tools.jar")); //mserver.setAttribute(processorName, new Attribute("UseCache", new Boolean(false))); //mserver.setAttribute(processorName, new Attribute("PathInJar", "/openjmx/adaptor/http/xsl")); @@ -152,26 +152,25 @@ mserver.invoke(httpServerName, "start", null, null); log.info( "Started MX4J console on host " + httphost + " at port " + httpport); - //return; - - httpAdapterLoaded = true; + + httpAdapterLoaded = true; } catch( Throwable t ) { - httpServerName=null; - log.error( "Can't load the MX4J http adapter " + t.toString() ); + httpServerName=null; + log.error( "Can't load the MX4J http adapter ", t ); } } if ((jrmpport != -1) && classExists("mx4j.tools.naming.NamingService")) { try { - jrmpServerName = new ObjectName("Naming:name=rmiregistry"); - mserver.createMBean("mx4j.tools.naming.NamingService", jrmpServerName, null); + jrmpServerName = registerObject("mx4j.tools.naming.NamingService", + "Naming:name=rmiregistry"); mserver.invoke(jrmpServerName, "start", null, null); log.info( "Creating " + jrmpServerName ); // Create the JRMP adaptor - ObjectName adaptor = new ObjectName("Adaptor:protocol=jrmp"); - mserver.createMBean("mx4j.adaptor.rmi.jrmp.JRMPAdaptor", adaptor, null); + ObjectName adaptor = registerObject("mx4j.adaptor.rmi.jrmp.JRMPAdaptor", + "Adaptor:protocol=jrmp"); // mx4j.adaptor.rmi.jrmp.JRMPAdaptorMBean mbean = (mx4j.adaptor.rmi.jrmp.JRMPAdaptorMBean)mx4j.util.StandardMBeanProxy. // create(mx4j.adaptor.rmi.jrmp.JRMPAdaptorMBean.class, mserver, adaptor); @@ -184,7 +183,8 @@ "com.sun.jndi.rmi.registry.RegistryContextFactory"}, new String[] { "java.lang.Object", "java.lang.Object" }); - String jrpmurl = "rmi://" + jrmphost + ":" + Integer.toString(jrmpport) ; + String jrpmurl = "rmi://" + jrmphost + ":" + Integer.toString(jrmpport) ; + mserver.invoke( adaptor, "putNamingProperty", new Object[] { javax.naming.Context.PROVIDER_URL, @@ -201,27 +201,25 @@ jrmpAdapterLoaded = true; } catch( Exception ex ) { - jrmpServerName = null; + jrmpServerName = null; log.error( "MX4j RMI adapter not loaded: " + ex.toString()); } } if ((httpport != -1) && (! httpAdapterLoaded) && classExists("com.sun.jdmk.comm.HtmlAdaptorServer")) { try { - Class c=Class.forName( "com.sun.jdmk.comm.HtmlAdaptorServer" ); - Object o=c.newInstance(); - httpServerName=new ObjectName("Adaptor:name=html,port=" + httpport); + httpServerName=registerObject("com.sun.jdmk.comm.HtmlAdaptorServer", + "Adaptor:name=html,port=" + httpport); log.info("Registering the JMX_RI html adapter " + httpServerName + " at port " + httpport); - mserver.registerMBean(o, httpServerName); mserver.setAttribute(httpServerName, new Attribute("Port", new Integer(httpport))); mserver.invoke(httpServerName, "start", null, null); - httpAdapterLoaded = true; + httpAdapterLoaded = true; } catch( Throwable t ) { - httpServerName = null; + httpServerName = null; log.error( "Can't load the JMX_RI http adapter " + t.toString() ); } } @@ -235,12 +233,12 @@ try { log.info("Stoping JMX "); - if( httpServerName!=null ) { - mserver.invoke(httpServerName, "stop", null, null); - } - if( jrmpServerName!=null ) { - mserver.invoke(jrmpServerName, "stop", null, null); - } + if( httpServerName!=null ) { + mserver.invoke(httpServerName, "stop", null, null); + } + if( jrmpServerName!=null ) { + mserver.invoke(jrmpServerName, "stop", null, null); + } } catch( Throwable t ) { log.error( "Destroy error" + t ); } @@ -255,32 +253,19 @@ } try { - Class c=Class.forName( "org.apache.log4j.jmx.HierarchyDynamicMBean" ); - Object o=c.newInstance(); + registerObject("org.apache.log4j.jmx.HierarchyDynamicMBean" , + "log4j:hierarchy=default"); log.info("Registering the JMX hierarchy for Log4J "); - mserver.registerMBean(o, new ObjectName("log4j:hierarchy=default")); } catch( Throwable t ) { log.info("Can't enable log4j mx: " + t.toString()); } - /* - DynamicMBeanProxy.createMBean( JkMain.getJkMain(), "jk2", "name=JkMain" ); - - for( int i=0; i< wEnv.getHandlerCount(); i++ ) { - JkHandler h=wEnv.getHandler( i ); - DynamicMBeanProxy.createMBean( h, "jk2", "name=" + h.getName() ); - } - */ } catch( Throwable t ) { log.error( "Init error", t ); } } public void addHandlerCallback( JkHandler w ) { - /*if( w!=this ) { - DynamicMBeanProxy.createMBean( w, "jk2", "name=" + w.getName() ); - } - */ } MBeanServer getMBeanServer() { @@ -305,6 +290,14 @@ } } + private ObjectName registerObject(String className, String oName) + throws Exception { + Class c = Class.forName(className); + Object o = c.newInstance(); + ObjectName objN = new ObjectName(oName); + mserver.registerMBean(o, objN); + return objN; + } private static org.apache.commons.logging.Log log= org.apache.commons.logging.LogFactory.getLog( JkMX.class );
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]