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);