You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by hg...@apache.org on 2003/09/29 09:38:10 UTC

cvs commit: jakarta-tomcat/proposals/JmxSupport/WEB-INF/classes/org/apache/tomcat/modules/config MxInterceptor.java DynamicMBeanProxy.java

hgomez      2003/09/29 00:38:10

  Modified:    proposals/JmxSupport/WEB-INF/classes/org/apache/tomcat/modules/config
                        MxInterceptor.java DynamicMBeanProxy.java
  Log:
  Add JRMP support if we ever use this Interceptor
  
  Revision  Changes    Path
  1.2       +127 -53   jakarta-tomcat/proposals/JmxSupport/WEB-INF/classes/org/apache/tomcat/modules/config/MxInterceptor.java
  
  Index: MxInterceptor.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat/proposals/JmxSupport/WEB-INF/classes/org/apache/tomcat/modules/config/MxInterceptor.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- MxInterceptor.java	30 Sep 2002 02:17:43 -0000	1.1
  +++ MxInterceptor.java	29 Sep 2003 07:38:10 -0000	1.2
  @@ -58,12 +58,24 @@
    */
   package org.apache.tomcat.modules.config;
   
  -import org.apache.tomcat.core.*;
  -import org.apache.tomcat.util.io.FileUtil;
  -import java.io.*;
  -import java.util.*;
  +import java.io.IOException;
  +import java.net.InetAddress;
   
  -import javax.management.*;
  +import javax.management.Attribute;
  +import javax.management.MBeanServer;
  +import javax.management.ObjectName;
  +
  +import mx4j.adaptor.rmi.jrmp.JRMPAdaptorMBean;
  +import mx4j.tools.naming.NamingServiceMBean;
  +import mx4j.util.StandardMBeanProxy;
  +
  +import org.apache.tomcat.core.BaseInterceptor;
  +import org.apache.tomcat.core.Context;
  +import org.apache.tomcat.core.ContextManager;
  +import org.apache.tomcat.core.Request;
  +import org.apache.tomcat.core.Response;
  +import org.apache.tomcat.core.TomcatException;
  +import org.apache.tomcat.modules.config.DynamicMBeanProxy;
   
   /**
    *
  @@ -72,11 +84,12 @@
   public class MxInterceptor  extends BaseInterceptor { 
   
       MBeanServer     mserver;
  -    private int     port=-1;
  +    private int    port=-1;
       private String host;
  -    private String  auth;
  +    private String auth;
       private String user;
       private String password;
  +    private String type = "http";
       
       // -------------------- Tomcat callbacks --------------------
   
  @@ -101,7 +114,7 @@
   
       /* -------------------- Public methods -------------------- */
   
  -    /** Enable the MX4J internal adapter
  +    /** Enable the MX4J internal adaptor
        */
       public void setPort( int i ) {
           port=i;
  @@ -140,58 +153,119 @@
           return password != null && password.length() > 0;
       }
   
  +	public void setType(String type) {
  +		this.type = type;
  +	}
  +	
  +	public String getType() {
  +		return type;
  +	}
  +	
       /* ==================== Start/stop ==================== */
       ObjectName serverName=null;
       
  -    /** Initialize the worker. After this call the worker will be
  -     *  ready to accept new requests.
  -     */
  -    public void loadAdapter() throws IOException {
  -        try {
  -            serverName = new ObjectName("Http:name=HttpAdaptor");
  -            mserver.createMBean("mx4j.adaptor.http.HttpAdaptor", serverName, null);
  +	/** Initialize the JRMP Adaptor for JMX.
  +	 */
  +	private void loadJRMPAdaptor()
  +	{
  +		try
  +		{
  +			// Create the RMI Naming registry
  +			ObjectName naming = new ObjectName("Naming:type=registry");
  +			mserver.createMBean("mx4j.tools.naming.NamingService", naming, null, new Object[] {new Integer(port)}, new String[] {"int"});
  +			NamingServiceMBean nsmbean = (NamingServiceMBean)StandardMBeanProxy.create(NamingServiceMBean.class, mserver, naming);
  +			nsmbean.start();
  +
  +			// Create the JRMP adaptor
  +			ObjectName adaptor = new ObjectName("Adaptor:protocol=JRMP");
  +			mserver.createMBean("mx4j.adaptor.rmi.jrmp.JRMPAdaptor", adaptor, null);
  +			JRMPAdaptorMBean jrmpmbean = (JRMPAdaptorMBean)StandardMBeanProxy.create(JRMPAdaptorMBean.class, mserver, adaptor);
  +	
  +			// Set the JNDI name with which will be registered
  +			String jndiName = "jrmp";
  +			jrmpmbean.setJNDIName(jndiName);
  +
  +			String lHost = host;
  +
  +			if (lHost == null)
  +				lHost = "localhost";
  +			else if (lHost.length() == 0)
  +					lHost = InetAddress.getLocalHost().getHostName();
  +
  +			log( "Started mx4j jrmp adaptor" + ((host != null) ? " for host " + host : "") + " at port " + port);
  +
  +			jrmpmbean.putJNDIProperty(javax.naming.Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.rmi.registry.RegistryContextFactory");
  +			jrmpmbean.putJNDIProperty(javax.naming.Context.PROVIDER_URL, "rmi://" + lHost + ":" + port);
  +
  +			jrmpmbean.start();
  +			
  +		} 
  +		catch( Throwable t ) 
  +		{
  +			log("Can't load MX4J JRMP adaptor" + t.toString() );
  +		}
  +	}
  +
  +	/** Initialize the HTTP Adaptor for JMX.
  +	 */
  +	private void loadHTTPAdaptor() {
  +		try {
  +			serverName = new ObjectName("Http:name=HttpAdaptor");
  +			mserver.createMBean("mx4j.adaptor.http.HttpAdaptor", serverName, null);
               
  -            if( host!=null ) 
  -                mserver.setAttribute(serverName, new Attribute("Host", host));
  +			if( host!=null ) 
  +				mserver.setAttribute(serverName, new Attribute("Host", host));
               
  -            mserver.setAttribute(serverName, new Attribute("Port", new Integer(port)));
  +			mserver.setAttribute(serverName, new Attribute("Port", new Integer(port)));
   
  -            // use authentication if user/password set
  -            if( auth!=null && user!=null && password!=null) 
  -                mserver.setAttribute(serverName, new Attribute("AuthenticationMethod", auth));
  -
  -            // add user names
  -            mserver.invoke(serverName, "addAuthorization", new Object[] {user, password}, 
  -                           new String[] {"java.lang.String", "java.lang.String"});
  -
  -            ObjectName processorName = new ObjectName("Http:name=XSLTProcessor");
  -            mserver.createMBean("mx4j.adaptor.http.XSLTProcessor", processorName, null);
  -            mserver.setAttribute(serverName, new Attribute("ProcessorName", processorName));
  +			// use authentication if user/password set
  +			if( auth!=null && user!=null && password!=null) 
  +				mserver.setAttribute(serverName, new Attribute("AuthenticationMethod", auth));
  +
  +			// add user names
  +			mserver.invoke(serverName, "addAuthorization", new Object[] {user, password}, 
  +						   new String[] {"java.lang.String", "java.lang.String"});
  +
  +			ObjectName processorName = new ObjectName("Http:name=XSLTProcessor");
  +			mserver.createMBean("mx4j.adaptor.http.XSLTProcessor", processorName, null);
  +			mserver.setAttribute(serverName, new Attribute("ProcessorName", processorName));
                   
  -            mserver.invoke(serverName, "start", null, null);
  -            log( "Started mx4j http adaptor" + ((host != null) ? " for host " + host : "") + " at port " + port);
  -            return;
  -        } catch( Throwable t ) {
  -            log( "Can't load the MX4J http adapter " + t.toString()  );
  -        }
  -
  -        try {
  -            Class c=Class.forName( "com.sun.jdmk.comm.HtmlAdaptorServer" );
  -            Object o=c.newInstance();
  -            serverName=new ObjectName("Adaptor:name=html,port=" + port);
  -            log("Registering the JMX_RI html adapter " + serverName);
  -            mserver.registerMBean(o,  serverName);
  -
  -            mserver.setAttribute(serverName,
  -                                 new Attribute("Port", new Integer(port)));
  +			mserver.invoke(serverName, "start", null, null);
  +			log( "Started mx4j http adaptor" + ((host != null) ? " for host " + host : "") + " at port " + port);
  +			return;
  +		} catch( Throwable t ) {
  +			log( "Can't load the MX4J http adaptor " + t.toString()  );
  +		}
  +
  +		try {
  +			Class c=Class.forName( "com.sun.jdmk.comm.HtmlAdaptorServer" );
  +			Object o=c.newInstance();
  +			serverName=new ObjectName("Adaptor:name=html,port=" + port);
  +			log("Registering the JMX_RI html adaptor " + serverName);
  +			mserver.registerMBean(o,  serverName);
  +
  +			mserver.setAttribute(serverName,
  +								 new Attribute("Port", new Integer(port)));
  +
  +			mserver.invoke(serverName, "start", null, null);
  +			log( "Start JMX_RI http adaptor at port " + port);
  +
  +		} catch( Throwable t ) {
  +			log( "Can't load the JMX_RI http adaptor " + t.toString()  );
  +		}
  +	}
   
  -            mserver.invoke(serverName, "start", null, null);
  -            log( "Start JMX_RI http adaptor at port " + port);
  -
  -        } catch( Throwable t ) {
  -            log( "Can't load the JMX_RI http adapter " + t.toString()  );
  -        }
  +    /** Initialize the worker. After this call the worker will be
  +     *  ready to accept new requests.
  +     */
  +    public void loadAdaptor() throws IOException {
  +    	
  +    	if (type.equalsIgnoreCase("jrmp"))
  +    		loadJRMPAdaptor();
  +    	else
  +			loadHTTPAdaptor();
       }
  +    	
   
       public void destroy() {
           try {
  @@ -233,7 +307,7 @@
   
                   if( port > 0 ) {
                       try {
  -                        loadAdapter();
  +                        loadAdaptor();
                       }
                       catch (IOException ioe)
                       {
  
  
  
  1.2       +22 -5     jakarta-tomcat/proposals/JmxSupport/WEB-INF/classes/org/apache/tomcat/modules/config/DynamicMBeanProxy.java
  
  Index: DynamicMBeanProxy.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat/proposals/JmxSupport/WEB-INF/classes/org/apache/tomcat/modules/config/DynamicMBeanProxy.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DynamicMBeanProxy.java	30 Sep 2002 02:17:43 -0000	1.1
  +++ DynamicMBeanProxy.java	29 Sep 2003 07:38:10 -0000	1.2
  @@ -59,11 +59,28 @@
   
   package org.apache.tomcat.modules.config;
   
  -import java.io.*;
  -import java.net.*;
  -import java.lang.reflect.*;
  -import java.util.*;
  -import javax.management.*;
  +import java.lang.reflect.InvocationTargetException;
  +import java.lang.reflect.Method;
  +import java.lang.reflect.Modifier;
  +import java.util.Enumeration;
  +import java.util.Hashtable;
  +import java.util.Iterator;
  +
  +import javax.management.Attribute;
  +import javax.management.AttributeList;
  +import javax.management.AttributeNotFoundException;
  +import javax.management.DynamicMBean;
  +import javax.management.InvalidAttributeValueException;
  +import javax.management.MBeanAttributeInfo;
  +import javax.management.MBeanConstructorInfo;
  +import javax.management.MBeanException;
  +import javax.management.MBeanInfo;
  +import javax.management.MBeanNotificationInfo;
  +import javax.management.MBeanOperationInfo;
  +import javax.management.MBeanServer;
  +import javax.management.MBeanServerFactory;
  +import javax.management.ObjectName;
  +import javax.management.ReflectionException;
   
   /**
    * DynamicMBean implementation using introspection to manage any
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org