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
00060 ObjectName onFactory = CatalinaObjectName.catalinaFactory();
00061
00062 ObjectName onServer = CatalinaObjectName.catalinaServer();
00063
00064 ObjectName[] aonServices = (ObjectName[]) myServer.getAttribute(onServer, "serviceNames");
00065
00066 String currentCatalinaServiceName = aonServices[0].getKeyProperty("serviceName");
00067
00068 String currentCatalinaDomainName = aonServices[0].getDomain();
00069
00070 ObjectName onService = CatalinaObjectName.catalinaService(currentCatalinaDomainName, currentCatalinaServiceName);
00071
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";
00079 } else if ("HTTPS".equalsIgnoreCase(type)) {
00080 operation = "createHttpsConnector";
00081 } else if ("AJP".equalsIgnoreCase(type)) {
00082 operation = "createAjpConnector";
00083 } else {
00084
00085 }
00086
00087 ClassLoader old = Thread.currentThread().getContextClassLoader();
00088 Thread.currentThread().setContextClassLoader(LoaderManager.getInstance().getCatalinaLoader());
00089
00090 sObjectName = (String) myServer.invoke(onFactory, operation, values
00091 , saCreateStandardConnectorTypes);
00092
00093 Thread.currentThread().setContextClassLoader(old);
00094 } catch (InstanceNotFoundException e) {
00095
00096 e.printStackTrace();
00097 } catch (MBeanException e) {
00098
00099 e.printStackTrace();
00100 } catch (ReflectionException e) {
00101
00102 e.printStackTrace();
00103 } catch (Exception e) {
00104
00105 e.printStackTrace();
00106 }
00107 return sObjectName;
00108 }
00109
00113 private String[] saCreateStandardConnectorTypes = {
00114 "java.lang.String", "java.lang.String", "int"
00115 };
00119 public MBeanServer getMyServer() {
00120 return myServer;
00121 }
00125 public void setMyServer(MBeanServer myServer) {
00126 this.myServer = myServer;
00127 }
00128 }