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/08/26 14:21:06 UTC
svn commit: r807977 - in /camel/trunk:
camel-core/src/main/java/org/apache/camel/impl/
camel-core/src/main/java/org/apache/camel/management/
components/camel-spring/src/main/java/org/apache/camel/spring/
Author: davsclaus
Date: Wed Aug 26 12:21:05 2009
New Revision: 807977
URL: http://svn.apache.org/viewvc?rev=807977&view=rev
Log:
CAMEL-1937: support multiple management strategies.
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagedLifecycleStrategy.java
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java?rev=807977&r1=807976&r2=807977&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java Wed Aug 26 12:21:05 2009
@@ -140,7 +140,7 @@
try {
LOG.info("JMX enabled. Using DefaultManagedLifecycleStrategy.");
managementStrategy = new ManagedManagementStrategy(new DefaultInstrumentationAgent());
- lifecycleStrategies.add(new DefaultManagedLifecycleStrategy(managementStrategy));
+ lifecycleStrategies.add(new DefaultManagedLifecycleStrategy(this));
registered = true;
} catch (NoClassDefFoundError e) {
// if we can't instantiate the JMX enabled strategy then fallback to default
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagedLifecycleStrategy.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagedLifecycleStrategy.java?rev=807977&r1=807976&r2=807977&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagedLifecycleStrategy.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagedLifecycleStrategy.java Wed Aug 26 12:21:05 2009
@@ -75,15 +75,11 @@
private static final String MANAGED_RESOURCE_CLASSNAME = "org.springframework.jmx.export.annotation.ManagedResource";
private final Map<Processor, KeyValueHolder<ProcessorDefinition, InstrumentationProcessor>> wrappedProcessors =
new HashMap<Processor, KeyValueHolder<ProcessorDefinition, InstrumentationProcessor>>();
- private final ManagementStrategy strategy;
+ private final CamelContext context;
private boolean initialized;
- public DefaultManagedLifecycleStrategy() {
- strategy = new ManagedManagementStrategy();
- }
-
- public DefaultManagedLifecycleStrategy(ManagementStrategy strategy) {
- this.strategy = strategy;
+ public DefaultManagedLifecycleStrategy(CamelContext context) {
+ this.context = context;
}
public void onContextStart(CamelContext context) {
@@ -91,10 +87,10 @@
initialized = true;
// call addService so that context will handle lifecycle on the strategy
- context.addService(strategy);
+ context.addService(getStrategy());
ManagedCamelContext mc = new ManagedCamelContext(context);
- strategy.manageObject(mc);
+ getStrategy().manageObject(mc);
} catch (Exception e) {
// must rethrow to allow CamelContext fallback to non JMX agent to allow
@@ -111,8 +107,8 @@
try {
ManagedCamelContext mc = new ManagedCamelContext(context);
// the context could have been removed already
- if (strategy.isManaged(null, mc)) {
- strategy.unmanageObject(mc);
+ if (getStrategy().isManaged(null, mc)) {
+ getStrategy().unmanageObject(mc);
}
} catch (Exception e) {
LOG.warn("Could not unregister CamelContext MBean", e);
@@ -126,7 +122,7 @@
}
try {
ManagedComponent mc = new ManagedComponent(name, component);
- strategy.manageObject(mc);
+ getStrategy().manageObject(mc);
} catch (Exception e) {
LOG.warn("Could not register Component MBean", e);
}
@@ -139,7 +135,7 @@
}
try {
ManagedComponent mc = new ManagedComponent(name, component);
- strategy.unmanageObject(mc);
+ getStrategy().unmanageObject(mc);
} catch (Exception e) {
LOG.warn("Could not unregister Component MBean", e);
}
@@ -191,7 +187,7 @@
} else {
me = new ManagedEndpoint(endpoint);
}
- strategy.unmanageObject(me);
+ getStrategy().unmanageObject(me);
} catch (Exception e) {
LOG.warn("Could not unregister Endpoint MBean for uri: " + endpoint.getEndpointUri(), e);
}
@@ -209,7 +205,7 @@
Method method = annotation.getClass().getMethod("objectName");
String name = (String) method.invoke(annotation);
ObjectName objectName = ObjectName.getInstance(name);
- strategy.manageNamedObject(endpoint, objectName);
+ getStrategy().manageNamedObject(endpoint, objectName);
} catch (Exception e) {
if (LOG.isTraceEnabled()) {
LOG.trace("objectName method not present on endpoint, wrapping endpoint in ManagedEndpoint instead: " + endpoint);
@@ -226,7 +222,7 @@
} else {
me = new ManagedEndpoint(endpoint);
}
- strategy.manageObject(me);
+ getStrategy().manageObject(me);
} catch (Exception e) {
LOG.warn("Could not register Endpoint MBean for uri: " + endpoint.getEndpointUri(), e);
}
@@ -251,7 +247,7 @@
managedObject = getManagedObjectForService(context, service);
}
try {
- strategy.manageObject(managedObject);
+ getStrategy().manageObject(managedObject);
} catch (Exception e) {
LOG.warn("Could not register service: " + service + " as Service MBean.", e);
}
@@ -272,7 +268,7 @@
}
if (managedObject != null) {
try {
- strategy.unmanageObject(managedObject);
+ getStrategy().unmanageObject(managedObject);
} catch (Exception e) {
LOG.warn("Could not unregister service: " + service + " as Service MBean.", e);
}
@@ -337,7 +333,7 @@
}
for (Route route : routes) {
- ManagedRoute mr = new ManagedRoute(strategy, route);
+ ManagedRoute mr = new ManagedRoute(getStrategy(), route);
// get the wrapped instrumentation processor from this route
// and set me as the counter
@@ -351,7 +347,7 @@
}
try {
- strategy.manageObject(mr);
+ getStrategy().manageObject(mr);
} catch (JMException e) {
LOG.warn("Could not register Route MBean", e);
} catch (Exception e) {
@@ -367,9 +363,9 @@
}
for (Route route : routes) {
- ManagedRoute mr = new ManagedRoute(strategy, route);
+ ManagedRoute mr = new ManagedRoute(getStrategy(), route);
try {
- strategy.unmanageObject(mr);
+ getStrategy().unmanageObject(mr);
} catch (Exception e) {
LOG.warn("Could not unregister Route MBean", e);
}
@@ -421,7 +417,7 @@
// okay this is a processor we would like to manage so create the
// performance counter that is the base for processors
- ManagedPerformanceCounter pc = new ManagedPerformanceCounter(strategy);
+ ManagedPerformanceCounter pc = new ManagedPerformanceCounter(getStrategy());
// and add it as a a registered counter that will be used lazy when Camel
// does the instrumentation of the route and adds the InstrumentationProcessor
@@ -451,20 +447,22 @@
}
// only if custom id assigned
- if (strategy.isOnlyManageProcessorWithCustomId()) {
+ if (getStrategy().isOnlyManageProcessorWithCustomId()) {
return processor.hasCustomIdAssigned();
}
// use customer filter
- return strategy.manageProcessor(processor);
+ return getStrategy().manageProcessor(processor);
+ }
+
+ private ManagementStrategy getStrategy() {
+ return context.getManagementStrategy();
}
public void start() throws Exception {
- strategy.start();
}
public void stop() throws Exception {
- strategy.stop();
}
}
Modified: camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java?rev=807977&r1=807976&r2=807977&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java (original)
+++ camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java Wed Aug 26 12:21:05 2009
@@ -432,7 +432,8 @@
if (camelJMXAgent != null && camelJMXAgent.isDisabled()) {
LOG.info("JMXAgent disabled");
// clear the existing lifecycle strategies define by the DefaultCamelContext constructor
- getContext().setLifecycleStrategies(new ArrayList<LifecycleStrategy>());
+ getContext().getLifecycleStrategies().clear();
+ // no need to add a lifecycle strategy as we do not need one as JMX is disabled
getContext().setManagementStrategy(new DefaultManagementStrategy());
} else if (camelJMXAgent != null) {
LOG.info("JMXAgent enabled: " + camelJMXAgent);
@@ -449,8 +450,8 @@
ManagementStrategy managementStrategy = new ManagedManagementStrategy(agent);
getContext().setManagementStrategy(managementStrategy);
// clear the existing lifecycle strategies define by the DefaultCamelContext constructor
- getContext().setLifecycleStrategies(new ArrayList<LifecycleStrategy>());
- getContext().addLifecycleStrategy(new DefaultManagedLifecycleStrategy(managementStrategy));
+ getContext().getLifecycleStrategies().clear();
+ getContext().addLifecycleStrategy(new DefaultManagedLifecycleStrategy(getContext()));
getContext().getManagementStrategy().onlyManageProcessorWithCustomId(camelJMXAgent.getOnlyRegisterProcessorWithCustomId());
}
}