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 2013/07/30 16:28:15 UTC
[2/8] git commit: CAMEL-6576: Improved initializaiton logic of
ManagementStrategy to avoid contention as well a potential NPE.
CAMEL-6576: Improved initializaiton logic of ManagementStrategy to avoid contention as well a potential NPE.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/82419d20
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/82419d20
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/82419d20
Branch: refs/heads/master
Commit: 82419d206c23c37882fa8786fe012c5b47240ddc
Parents: 2c9ff01
Author: Claus Ibsen <da...@apache.org>
Authored: Tue Jul 30 13:00:05 2013 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Tue Jul 30 16:28:00 2013 +0200
----------------------------------------------------------------------
.../main/java/org/apache/camel/impl/DefaultCamelContext.java | 6 +++---
.../org/apache/camel/management/DefaultManagementAgent.java | 3 ---
.../org/apache/camel/management/ManagementStrategyFactory.java | 4 ++++
3 files changed, 7 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/82419d20/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
index 385a920..70390f3 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
@@ -244,6 +244,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
// setup management strategy first since end users may use it to add event notifiers
// using the management strategy before the CamelContext has been started
this.managementStrategy = createManagementStrategy();
+ this.managementMBeanAssembler = createManagementMBeanAssembler();
Container.Instance.manage(this);
}
@@ -1550,9 +1551,6 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
// use the classloader that loaded this class
setApplicationContextClassLoader(this.getClass().getClassLoader());
}
- if (managementMBeanAssembler == null) {
- managementMBeanAssembler = createManagementMBeanAssembler();
- }
if (log.isDebugEnabled()) {
log.debug("Using ClassResolver={}, PackageScanClassResolver={}, ApplicationContextClassLoader={}",
@@ -2484,6 +2482,8 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
throw new IllegalStateException("Disabling JMX can only be done when CamelContext has not been started");
}
managementStrategy = new DefaultManagementStrategy(this);
+ // must clear lifecycle strategies as we add DefaultManagementLifecycleStrategy by default for JMX support
+ lifecycleStrategies.clear();
}
public InflightRepository getInflightRepository() {
http://git-wip-us.apache.org/repos/asf/camel/blob/82419d20/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java
index eeda9c9..d2e57fb 100644
--- a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java
+++ b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java
@@ -265,9 +265,6 @@ public class DefaultManagementAgent extends ServiceSupport implements Management
protected void doStart() throws Exception {
ObjectHelper.notNull(camelContext, "CamelContext");
- // must add management lifecycle strategy
- camelContext.getLifecycleStrategies().add(0, new DefaultManagementLifecycleStrategy(camelContext));
-
// create mbean server if is has not be injected.
if (server == null) {
finalizeSettings();
http://git-wip-us.apache.org/repos/asf/camel/blob/82419d20/camel-core/src/main/java/org/apache/camel/management/ManagementStrategyFactory.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/ManagementStrategyFactory.java b/camel-core/src/main/java/org/apache/camel/management/ManagementStrategyFactory.java
index 50d55fa..814d5ac 100644
--- a/camel-core/src/main/java/org/apache/camel/management/ManagementStrategyFactory.java
+++ b/camel-core/src/main/java/org/apache/camel/management/ManagementStrategyFactory.java
@@ -35,6 +35,10 @@ public class ManagementStrategyFactory {
} else {
try {
answer = new ManagedManagementStrategy(context, new DefaultManagementAgent(context));
+
+ // must add management lifecycle strategy
+ context.getLifecycleStrategies().add(0, new DefaultManagementLifecycleStrategy(context));
+
} catch (Exception e) {
log.warn("Cannot create JMX lifecycle strategy. Will fallback and disable JMX.", e);
answer = new DefaultManagementStrategy(context);