| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package org.apache.log4j.jmx; |
| |
| import org.apache.log4j.Logger; |
| |
| import javax.management.JMException; |
| import javax.management.MBeanServer; |
| import javax.management.MBeanServerFactory; |
| import javax.management.ObjectName; |
| import java.lang.reflect.InvocationTargetException; |
| import java.io.InterruptedIOException; |
| |
| |
| /** |
| * Manages an instance of com.sun.jdmk.comm.HtmlAdapterServer which |
| * was provided for demonstration purposes in the |
| * Java Management Extensions Reference Implementation 1.2.1. |
| * This class is provided to maintain compatibility with earlier |
| * versions of log4j and use in new code is discouraged. |
| * |
| * @deprecated |
| */ |
| public class Agent { |
| |
| /** |
| * Diagnostic logger. |
| * @deprecated |
| */ |
| static Logger log = Logger.getLogger(Agent.class); |
| |
| /** |
| * Create new instance. |
| * @deprecated |
| */ |
| public Agent() { |
| } |
| |
| /** |
| * Creates a new instance of com.sun.jdmk.comm.HtmlAdapterServer |
| * using reflection. |
| * |
| * @since 1.2.16 |
| * @return new instance. |
| */ |
| private static Object createServer() { |
| Object newInstance = null; |
| try { |
| newInstance = Class.forName( |
| "com.sun.jdmk.comm.HtmlAdapterServer").newInstance(); |
| } catch (ClassNotFoundException ex) { |
| throw new RuntimeException(ex.toString()); |
| } catch (InstantiationException ex) { |
| throw new RuntimeException(ex.toString()); |
| } catch (IllegalAccessException ex) { |
| throw new RuntimeException(ex.toString()); |
| } |
| return newInstance; |
| } |
| |
| /** |
| * Invokes HtmlAdapterServer.start() using reflection. |
| * |
| * @since 1.2.16 |
| * @param server instance of com.sun.jdmk.comm.HtmlAdapterServer. |
| */ |
| private static void startServer(final Object server) { |
| try { |
| server.getClass().getMethod("start", new Class[0]). |
| invoke(server, new Object[0]); |
| } catch(InvocationTargetException ex) { |
| Throwable cause = ex.getTargetException(); |
| if (cause instanceof RuntimeException) { |
| throw (RuntimeException) cause; |
| } else if (cause != null) { |
| if (cause instanceof InterruptedException |
| || cause instanceof InterruptedIOException) { |
| Thread.currentThread().interrupt(); |
| } |
| throw new RuntimeException(cause.toString()); |
| } else { |
| throw new RuntimeException(); |
| } |
| } catch(NoSuchMethodException ex) { |
| throw new RuntimeException(ex.toString()); |
| } catch(IllegalAccessException ex) { |
| throw new RuntimeException(ex.toString()); |
| } |
| } |
| |
| |
| /** |
| * Starts instance of HtmlAdapterServer. |
| * @deprecated |
| */ |
| public void start() { |
| |
| MBeanServer server = MBeanServerFactory.createMBeanServer(); |
| Object html = createServer(); |
| |
| try { |
| log.info("Registering HtmlAdaptorServer instance."); |
| server.registerMBean(html, new ObjectName("Adaptor:name=html,port=8082")); |
| log.info("Registering HierarchyDynamicMBean instance."); |
| HierarchyDynamicMBean hdm = new HierarchyDynamicMBean(); |
| server.registerMBean(hdm, new ObjectName("log4j:hiearchy=default")); |
| } catch(JMException e) { |
| log.error("Problem while registering MBeans instances.", e); |
| return; |
| } catch(RuntimeException e) { |
| log.error("Problem while registering MBeans instances.", e); |
| return; |
| } |
| startServer(html); |
| } |
| } |