CatalinaConnectorFactory.java

00001 
00026 package org.objectweb.jonas.web.catalina50;
00027 
00028 import javax.management.InstanceNotFoundException;
00029 import javax.management.MBeanException;
00030 import javax.management.MBeanServer;
00031 import javax.management.ObjectName;
00032 import javax.management.ReflectionException;
00033 
00034 import org.objectweb.jonas.server.LoaderManager;
00035 import org.objectweb.jonas.jmx.CatalinaObjectName;
00036 
00042 public class CatalinaConnectorFactory implements CatalinaConnectorFactoryMBean {
00047     private MBeanServer myServer = null;
00048 
00056     public String createConnector(String type, String address, int port) {
00057         String sObjectName = null;
00058         try {
00059             // Get Catalina MBeanFactory ObjectName
00060             ObjectName onFactory = CatalinaObjectName.catalinaFactory();
00061             // Get Catalina Server ObjectName
00062             ObjectName onServer = CatalinaObjectName.catalinaServer();
00063             // Get Services
00064             ObjectName[] aonServices = (ObjectName[]) myServer.getAttribute(onServer, "serviceNames");
00065             // Default Service : get the first one ! (see also WhereAreYou class in jonasadmin)
00066             String currentCatalinaServiceName = aonServices[0].getKeyProperty("serviceName");
00067             // Domain
00068             String currentCatalinaDomainName = aonServices[0].getDomain();
00069             // Get default Catalina Service (called Tomcat-JOnAS in default configuration file
00070             ObjectName onService = CatalinaObjectName.catalinaService(currentCatalinaDomainName, currentCatalinaServiceName);
00071             // Prepare arguments to invoke the createXxxConnector method
00072             Object[] values = new Object[3];
00073             values[0] = onService.toString();
00074             values[1] = address;
00075             values[2] = new Integer(port);
00076             String operation = null;
00077             if ("HTTP".equalsIgnoreCase(type)) {
00078                 operation = "createHttpConnector"; // HTTP
00079             } else if ("HTTPS".equalsIgnoreCase(type)) {
00080                 operation = "createHttpsConnector"; // HTTPS
00081             } else if ("AJP".equalsIgnoreCase(type)) {
00082                 operation = "createAjpConnector"; // AJP(HTTP)
00083             } else {
00084                 // TO DO
00085             }
00086             // Set Catalina class loader before making the call
00087             ClassLoader old = Thread.currentThread().getContextClassLoader();
00088             Thread.currentThread().setContextClassLoader(LoaderManager.getInstance().getCatalinaLoader());
00089             // Call the management method createXxxConnector
00090             sObjectName = (String) myServer.invoke(onFactory, operation, values
00091                 , saCreateStandardConnectorTypes);
00092             // Restore the class loader
00093             Thread.currentThread().setContextClassLoader(old);
00094         } catch (InstanceNotFoundException e) {
00095             // TODO Auto-generated catch block
00096             e.printStackTrace();
00097         } catch (MBeanException e) {
00098             // TODO Auto-generated catch block
00099             e.printStackTrace();
00100         } catch (ReflectionException e) {
00101             // TODO Auto-generated catch block
00102             e.printStackTrace();
00103         } catch (Exception e) {
00104             // TODO Auto-generated catch block
00105             e.printStackTrace();
00106         }
00107         return sObjectName;
00108     }
00109 
00113     private String[] saCreateStandardConnectorTypes = {
00114             "java.lang.String", "java.lang.String", "int" // port
00115         };
00119     public MBeanServer getMyServer() {
00120         return myServer;
00121     }
00125     public void setMyServer(MBeanServer myServer) {
00126         this.myServer = myServer;
00127     }
00128 }

Generated on Tue Feb 15 15:05:25 2005 for JOnAS by  doxygen 1.3.9.1