001 /**
002 *
003 * Licensed to the Apache Software Foundation (ASF) under one or more
004 * contributor license agreements. See the NOTICE file distributed with
005 * this work for additional information regarding copyright ownership.
006 * The ASF licenses this file to You under the Apache License, Version 2.0
007 * (the "License"); you may not use this file except in compliance with
008 * the License. You may obtain a copy of the License at
009 *
010 * http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018 package org.apache.camel.management;
019
020 import java.util.Collection;
021
022 import javax.management.JMException;
023
024 import org.apache.camel.CamelContext;
025 import org.apache.camel.Endpoint;
026 import org.apache.camel.InstrumentationAgent;
027 import org.apache.camel.LifecycleStrategy;
028 import org.apache.camel.Route;
029 import org.apache.camel.Service;
030 import org.apache.camel.impl.DefaultCamelContext;
031 import org.apache.camel.impl.ServiceSupport;
032
033 public class InstrumentationLifecycleStrategy implements LifecycleStrategy {
034 InstrumentationAgent agent;
035 CamelNamingStrategy naming;
036
037 public InstrumentationLifecycleStrategy(InstrumentationAgent agent) {
038 this.agent = agent;
039 naming = new CamelNamingStrategy(agent.getMBeanServer().getDefaultDomain());
040 }
041
042 public void onContextCreate(CamelContext context) {
043 if (context instanceof DefaultCamelContext) {
044 try {
045 DefaultCamelContext dc = (DefaultCamelContext)context;
046 ManagedService ms = new ManagedService(dc);
047 agent.register(ms, naming.getObjectName(dc));
048 }
049 catch(JMException e) {
050 // log a WARN
051 }
052 }
053 }
054
055 public void onEndpointAdd(Endpoint endpoint) {
056 try {
057 ManagedEndpoint me = new ManagedEndpoint(endpoint);
058 agent.register(me, naming.getObjectName(me));
059 }
060 catch(JMException e) {
061 // log a WARN
062 }
063 }
064
065 public void onRoutesAdd(Collection<Route> routes) {
066 for (Route route: routes) {
067 try {
068 ManagedRoute mr = new ManagedRoute(route);
069 agent.register(mr, naming.getObjectName(mr));
070 }
071 catch(JMException e) {
072 // log a WARN
073 }
074 }
075 }
076
077 public void onServiceAdd(CamelContext context, Service service) {
078 if (service instanceof ServiceSupport) {
079 try {
080 ManagedService ms = new ManagedService((ServiceSupport)service);
081 agent.register(ms, naming.getObjectName(context, ms));
082 }
083 catch(JMException e) {
084 // log a WARN
085 }
086 }
087 }
088 }