00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 package org.objectweb.cjdbc.controller.jmx;
00026
00027 import java.net.InetAddress;
00028 import java.net.UnknownHostException;
00029 import java.util.ArrayList;
00030 import java.util.List;
00031
00032 import javax.management.Attribute;
00033 import javax.management.MBeanServer;
00034 import javax.management.ObjectName;
00035 import javax.management.remote.JMXAuthenticator;
00036
00037 import org.objectweb.cjdbc.common.i18n.Translate;
00038 import org.objectweb.cjdbc.common.jmx.JmxException;
00039 import org.objectweb.cjdbc.common.log.Trace;
00040 import org.objectweb.cjdbc.common.net.SSLConfiguration;
00041
00042
00043
00044
00045
00046
00047
00048 public class HttpAdaptor
00049
00050 {
00051 static Trace logger = Trace
00052 .getLogger("org.objectweb.cjdbc.controller.jmx");
00053
00054 private String hostName;
00055 private int port;
00056
00057 private SSLConfiguration sslConfig;
00058
00059 private mx4j.tools.adaptor.http.HttpAdaptor adaptor;
00060 private ObjectName objectName;
00061 private ObjectName processorName;
00062
00063 private static List httpAdaptors = new ArrayList();
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075 public HttpAdaptor(String hostName, int port, JMXAuthenticator authenticator,
00076 SSLConfiguration sslConfig) throws JmxException
00077 {
00078 if (hostName != null)
00079 {
00080 this.hostName = hostName;
00081 }
00082 else
00083 {
00084 try
00085 {
00086
00087 this.hostName = InetAddress.getLocalHost().getHostName();
00088 }
00089 catch (UnknownHostException ex)
00090 {
00091 throw new JmxException(ex);
00092 }
00093 }
00094 this.port = port;
00095
00096 this.sslConfig = sslConfig;
00097 addHttpAdaptor(this);
00098 }
00099
00100
00101
00102
00103
00104
00105 public void start() throws JmxException
00106 {
00107 try
00108 {
00109
00110 MBeanServer server = MBeanServerManager.getInstance();
00111
00112 logger.info(Translate.get("jmx.create.http.adaptor", new Object[]{
00113 hostName, String.valueOf(port)}));
00114 adaptor = new mx4j.tools.adaptor.http.HttpAdaptor();
00115 objectName = new ObjectName("Server:name=HttpAdaptor");
00116 server.registerMBean(adaptor, objectName);
00117 adaptor.setHost(hostName);
00118 adaptor.setPort(port);
00119
00120 logger.debug(Translate.get("jmx.create.xslt.processor"));
00121 processorName = new ObjectName("Server:name=XSLTProcessor");
00122 server.createMBean(mx4j.tools.adaptor.http.XSLTProcessor.class.getName(),
00123 processorName, null);
00124 server.setAttribute(objectName, new Attribute("ProcessorName",
00125 processorName));
00126 if (this.sslConfig != null)
00127 {
00128
00129 throw new JmxException("ssl for http not implemented");
00130 }
00131 adaptor.start();
00132 }
00133 catch (Exception e)
00134 {
00135 e.printStackTrace();
00136 throw new JmxException(e);
00137 }
00138 }
00139
00140
00141
00142
00143
00144
00145 public void stop() throws JmxException
00146 {
00147 try
00148 {
00149 MBeanServer server = MBeanServerManager.getInstance();
00150 adaptor.stop();
00151 server.unregisterMBean(objectName);
00152 server.unregisterMBean(processorName);
00153 }
00154 catch (Exception e)
00155 {
00156 throw new JmxException(e);
00157 }
00158 }
00159
00160
00161
00162
00163
00164
00165 public static List getHttpAdaptors()
00166 {
00167 return httpAdaptors;
00168 }
00169
00170
00171
00172
00173
00174
00175 private static synchronized void addHttpAdaptor(HttpAdaptor httpAdaptor)
00176 {
00177 httpAdaptors.add(httpAdaptor);
00178 }
00179 }