You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2009/09/01 10:36:18 UTC
svn commit: r809887 - in
/camel/trunk/camel-core/src/main/java/org/apache/camel:
management/DefaultManagementLifecycleStrategy.java
management/ManagedManagementStrategy.java spi/ManagementNamingStrategy.java
Author: davsclaus
Date: Tue Sep 1 08:36:18 2009
New Revision: 809887
URL: http://svn.apache.org/viewvc?rev=809887&view=rev
Log:
CAMEL-1933: Overhaul of JMX. ManagementAware is used when applicable.
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
camel/trunk/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
camel/trunk/camel-core/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java?rev=809887&r1=809886&r2=809887&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementLifecycleStrategy.java Tue Sep 1 08:36:18 2009
@@ -124,7 +124,7 @@
return;
}
try {
- ManagedComponent mc = new ManagedComponent(name, component);
+ Object mc = getManagedObjectForComponent(name, component);
getStrategy().manageObject(mc);
} catch (Exception e) {
LOG.warn("Could not register Component MBean", e);
@@ -137,13 +137,21 @@
return;
}
try {
- ManagedComponent mc = new ManagedComponent(name, component);
+ Object mc = getManagedObjectForComponent(name, component);
getStrategy().unmanageObject(mc);
} catch (Exception e) {
LOG.warn("Could not unregister Component MBean", e);
}
}
+ private Object getManagedObjectForComponent(String name, Component component) {
+ if (component instanceof ManagementAware) {
+ return ((ManagementAware) component).getManagedObject(component);
+ } else {
+ return new ManagedComponent(name, component);
+ }
+ }
+
/**
* If the endpoint is an instance of ManagedResource then register it with the
* mbean server, if it is not then wrap the endpoint in a {@link ManagedEndpoint} and
@@ -159,14 +167,7 @@
}
try {
- Object me;
- if (endpoint instanceof ManagementAware) {
- me = ((ManagementAware) endpoint).getManagedObject(endpoint);
- } else if (endpoint instanceof BrowsableEndpoint) {
- me = new ManagedBrowsableEndpoint((BrowsableEndpoint) endpoint);
- } else {
- me = new ManagedEndpoint(endpoint);
- }
+ Object me = getManagedObjectForEndpoint(endpoint);
getStrategy().manageObject(me);
} catch (Exception e) {
LOG.warn("Could not register Endpoint MBean for uri: " + endpoint.getEndpointUri(), e);
@@ -181,20 +182,23 @@
}
try {
- Object me;
- if (endpoint instanceof ManagementAware) {
- me = ((ManagementAware) endpoint).getManagedObject(endpoint);
- } else if (endpoint instanceof BrowsableEndpoint) {
- me = new ManagedBrowsableEndpoint((BrowsableEndpoint) endpoint);
- } else {
- me = new ManagedEndpoint(endpoint);
- }
+ Object me = getManagedObjectForEndpoint(endpoint);
getStrategy().unmanageObject(me);
} catch (Exception e) {
LOG.warn("Could not unregister Endpoint MBean for uri: " + endpoint.getEndpointUri(), e);
}
}
+ private Object getManagedObjectForEndpoint(Endpoint endpoint) {
+ if (endpoint instanceof ManagementAware) {
+ return ((ManagementAware) endpoint).getManagedObject(endpoint);
+ } else if (endpoint instanceof BrowsableEndpoint) {
+ return new ManagedBrowsableEndpoint((BrowsableEndpoint) endpoint);
+ } else {
+ return new ManagedEndpoint(endpoint);
+ }
+ }
+
public void onServiceAdd(CamelContext context, Service service) {
// services can by any kind of misc type but also processors
// so we have special logic when its a processor
@@ -204,16 +208,10 @@
return;
}
- Object managedObject;
- if (service instanceof Tracer) {
- // special for tracer
- managedObject = new ManagedTracer(context, (Tracer) service);
- } else if (service instanceof Processor) {
- // special for processors
- managedObject = getManagedObjectForProcessor(context, (Processor) service);
- } else {
- // regular for services
- managedObject = getManagedObjectForService(context, service);
+ Object managedObject = getManagedObjectForService(context, service);
+ if (managedObject == null) {
+ // service should not be managed
+ return;
}
// skip already managed services, for example if a route has been restarted
@@ -237,17 +235,7 @@
return;
}
- Object managedObject;
- if (service instanceof Tracer) {
- // special for tracer
- managedObject = new ManagedTracer(context, (Tracer) service);
- } else if (service instanceof Processor) {
- // special for processors
- managedObject = getManagedObjectForProcessor(context, (Processor) service);
- } else {
- // regular for services
- managedObject = getManagedObjectForService(context, service);
- }
+ Object managedObject = getManagedObjectForService(context, service);
if (managedObject != null) {
try {
getStrategy().unmanageObject(managedObject);
@@ -257,7 +245,29 @@
}
}
- protected Object getManagedObjectForProcessor(CamelContext context, Processor processor) {
+ @SuppressWarnings("unchecked")
+ private Object getManagedObjectForService(CamelContext context, Service service) {
+ if (service instanceof ManagementAware) {
+ return ((ManagementAware) service).getManagedObject(service);
+ } else if (service instanceof Tracer) {
+ // special for tracer
+ return new ManagedTracer(context, (Tracer) service);
+ } else if (service instanceof Producer) {
+ return new ManagedProducer(context, (Producer) service);
+ } else if (service instanceof ScheduledPollConsumer) {
+ return new ManagedScheduledPollConsumer(context, (ScheduledPollConsumer) service);
+ } else if (service instanceof Consumer) {
+ return new ManagedConsumer(context, (Consumer) service);
+ } else if (service instanceof Processor) {
+ // special for processors
+ return getManagedObjectForProcessor(context, (Processor) service);
+ }
+
+ // not supported
+ return null;
+ }
+
+ private Object getManagedObjectForProcessor(CamelContext context, Processor processor) {
// a bit of magic here as the processors we want to manage have already been registered
// in the wrapped processors map when Camel have instrumented the route on route initialization
// so the idea is now to only manage the processors from the map
@@ -297,19 +307,6 @@
return new ManagedProcessor(context, processor, definition);
}
- private Object getManagedObjectForService(CamelContext context, Service service) {
- if (service instanceof ScheduledPollConsumer) {
- return new ManagedScheduledPollConsumer(context, (ScheduledPollConsumer) service);
- } else if (service instanceof Consumer) {
- return new ManagedConsumer(context, (Consumer) service);
- } else if (service instanceof Producer) {
- return new ManagedProducer(context, (Producer) service);
- }
-
- // not supported
- return null;
- }
-
public void onRoutesAdd(Collection<Route> routes) {
// the agent hasn't been started
if (!initialized) {
@@ -444,6 +441,7 @@
}
public void stop() throws Exception {
+ initialized = false;
}
}
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java?rev=809887&r1=809886&r2=809887&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java Tue Sep 1 08:36:18 2009
@@ -36,7 +36,7 @@
/**
* A JMX capable {@link org.apache.camel.spi.ManagementStrategy} that Camel by default uses if possible.
* <p/>
- * Camel detects whether its possbile to use this JMX capable strategy and if <b>not</b> then Camel
+ * Camel detects whether its possible to use this JMX capable strategy and if <b>not</b> then Camel
* will fallback to the {@link org.apache.camel.management.DefaultManagementStrategy} instead.
*
* @see org.apache.camel.spi.ManagementStrategy
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java?rev=809887&r1=809886&r2=809887&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java Tue Sep 1 08:36:18 2009
@@ -28,6 +28,8 @@
import org.apache.camel.model.ProcessorDefinition;
/**
+ * Strategy for computing {@link ObjectName} names for the various beans that Camel register for management.
+ *
* @version $Revision$
*/
public interface ManagementNamingStrategy {