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/24 12:25:32 UTC

[1/2] git commit: CAMEL-6564: JMX services which is single (only one instance per camel) should used fixed MBean name

Updated Branches:
  refs/heads/master 4c1092760 -> df4b8bb3c


CAMEL-6564: JMX services which is single (only one instance per camel) should used fixed MBean name


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/577c61b0
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/577c61b0
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/577c61b0

Branch: refs/heads/master
Commit: 577c61b01484507da9fb6372ecdcc64281653218
Parents: 4c10927
Author: Claus Ibsen <da...@apache.org>
Authored: Wed Jul 24 10:23:44 2013 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Wed Jul 24 10:23:44 2013 +0200

----------------------------------------------------------------------
 .../management/DefaultManagementNamingStrategy.java  | 15 +++++++++++++--
 .../camel/management/ManagedManagementStrategy.java  |  6 +++++-
 .../management/mbean/ManagedEndpointRegistry.java    |  1 +
 .../camel/management/mbean/ManagedService.java       |  5 +++++
 .../mbean/ManagedStreamCachingStrategy.java          |  1 +
 .../mbean/ManagedTypeConverterRegistry.java          |  1 +
 .../apache/camel/spi/ManagementNamingStrategy.java   |  2 ++
 7 files changed, 28 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/577c61b0/camel-core/src/main/java/org/apache/camel/management/DefaultManagementNamingStrategy.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementNamingStrategy.java b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementNamingStrategy.java
index 626a685..368ea4f 100644
--- a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementNamingStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementNamingStrategy.java
@@ -126,8 +126,9 @@ public class DefaultManagementNamingStrategy implements ManagementNamingStrategy
 
     public ObjectName getObjectNameForErrorHandler(RouteContext routeContext, Processor errorHandler, ErrorHandlerFactory builder) throws MalformedObjectNameException {
         StringBuilder buffer = new StringBuilder();
-        buffer.append(domainName + ":" + KEY_CONTEXT + "=" + getContextId(routeContext.getCamelContext()) + ","
-                      + KEY_TYPE + "=" +  TYPE_ERRORHANDLER + ",");
+        buffer.append(domainName).append(":");
+        buffer.append(KEY_CONTEXT + "=").append(getContextId(routeContext.getCamelContext())).append(",");
+        buffer.append(KEY_TYPE + "=").append(TYPE_ERRORHANDLER + ",");
 
         // we want to only register one instance of the various error handler types and thus do some lookup
         // if its a ErrorHandlerBuildRef. We need a bit of work to do that as there are potential indirection.
@@ -250,6 +251,16 @@ public class DefaultManagementNamingStrategy implements ManagementNamingStrategy
         return createObjectName(buffer);
     }
 
+    public ObjectName getObjectNameForSingleService(CamelContext context, Service service) throws MalformedObjectNameException {
+        StringBuilder buffer = new StringBuilder();
+        buffer.append(domainName).append(":");
+        buffer.append(KEY_CONTEXT + "=").append(getContextId(context)).append(",");
+        buffer.append(KEY_TYPE + "=" + TYPE_SERVICE + ",");
+        buffer.append(KEY_NAME + "=")
+            .append(service.getClass().getSimpleName());
+        return createObjectName(buffer);
+    }
+
     public ObjectName getObjectNameForThreadPool(CamelContext context, ThreadPoolExecutor threadPool, String id, String sourceId) throws MalformedObjectNameException {
         StringBuilder buffer = new StringBuilder();
         buffer.append(domainName).append(":");

http://git-wip-us.apache.org/repos/asf/camel/blob/577c61b0/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java b/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
index c16e5c1..ea0168e 100644
--- a/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
@@ -133,7 +133,11 @@ public class ManagedManagementStrategy extends DefaultManagementStrategy {
             if (ms.getService() instanceof Endpoint) {
                 return null;
             }
-            objectName = getManagementNamingStrategy().getObjectNameForService(ms.getContext(), ms.getService());
+            if (ms.isSingle()) {
+                objectName = getManagementNamingStrategy().getObjectNameForSingleService(ms.getContext(), ms.getService());
+            } else {
+                objectName = getManagementNamingStrategy().getObjectNameForService(ms.getContext(), ms.getService());
+            }
         }
 
         return nameType.cast(objectName);

http://git-wip-us.apache.org/repos/asf/camel/blob/577c61b0/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEndpointRegistry.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEndpointRegistry.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEndpointRegistry.java
index 80cd79d..46758ad 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEndpointRegistry.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEndpointRegistry.java
@@ -31,6 +31,7 @@ public class ManagedEndpointRegistry extends ManagedService implements ManagedEn
     public ManagedEndpointRegistry(CamelContext context, EndpointRegistry endpointRegistry) {
         super(context, endpointRegistry);
         this.endpointRegistry = endpointRegistry;
+        this.single = true;
     }
 
     public EndpointRegistry getEndpointRegistry() {

http://git-wip-us.apache.org/repos/asf/camel/blob/577c61b0/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedService.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedService.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedService.java
index ef80f09..ec2f891 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedService.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedService.java
@@ -32,6 +32,7 @@ public class ManagedService implements ManagedInstance, ManagedServiceMBean {
     private final CamelContext context;
     private final Service service;
     private Route route;
+    protected boolean single;
 
     public ManagedService(CamelContext context, Service service) {
         this.context = context;
@@ -42,6 +43,10 @@ public class ManagedService implements ManagedInstance, ManagedServiceMBean {
         // do nothing
     }
 
+    public boolean isSingle() {
+        return single;
+    }
+
     public Service getService() {
         return service;
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/577c61b0/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedStreamCachingStrategy.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedStreamCachingStrategy.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedStreamCachingStrategy.java
index b57a010..5fec257 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedStreamCachingStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedStreamCachingStrategy.java
@@ -32,6 +32,7 @@ public class ManagedStreamCachingStrategy extends ManagedService implements Mana
         super(camelContext, streamCachingStrategy);
         this.camelContext = camelContext;
         this.streamCachingStrategy = streamCachingStrategy;
+        this.single = true;
     }
 
     public void init(ManagementStrategy strategy) {

http://git-wip-us.apache.org/repos/asf/camel/blob/577c61b0/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTypeConverterRegistry.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTypeConverterRegistry.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTypeConverterRegistry.java
index 55af467..e808493 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTypeConverterRegistry.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTypeConverterRegistry.java
@@ -32,6 +32,7 @@ public class ManagedTypeConverterRegistry extends ManagedService implements Mana
     public ManagedTypeConverterRegistry(CamelContext context, TypeConverterRegistry registry) {
         super(context, registry);
         this.registry = registry;
+        this.single = true;
     }
 
     public TypeConverterRegistry getRegistry() {

http://git-wip-us.apache.org/repos/asf/camel/blob/577c61b0/camel-core/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java b/camel-core/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java
index 6d5d4ff..8cb0045 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java
@@ -60,6 +60,8 @@ public interface ManagementNamingStrategy {
 
     ObjectName getObjectNameForService(CamelContext context, Service service) throws MalformedObjectNameException;
 
+    ObjectName getObjectNameForSingleService(CamelContext context, Service service) throws MalformedObjectNameException;
+
     ObjectName getObjectNameForThreadPool(CamelContext context, ThreadPoolExecutor threadPool, String id, String sourceId) throws MalformedObjectNameException;
 
     ObjectName getObjectNameForEventNotifier(CamelContext context, EventNotifier eventNotifier) throws MalformedObjectNameException;


[2/2] git commit: CAMEL-6564: JMX services which is single (only one instance per camel) should used fixed MBean name

Posted by da...@apache.org.
CAMEL-6564: JMX services which is single (only one instance per camel) should used fixed MBean name


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/df4b8bb3
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/df4b8bb3
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/df4b8bb3

Branch: refs/heads/master
Commit: df4b8bb3c1b8ebaa43d0809fa03ad5b6a7d04980
Parents: 577c61b
Author: Claus Ibsen <da...@apache.org>
Authored: Wed Jul 24 12:25:16 2013 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Wed Jul 24 12:25:16 2013 +0200

----------------------------------------------------------------------
 .../java/org/apache/camel/StaticService.java    | 23 ++++++++++++++++++++
 .../management/mbean/ManagedServiceMBean.java   |  3 +++
 .../impl/DefaultExecutorServiceManager.java     | 10 +++++++--
 .../impl/DefaultPackageScanClassResolver.java   |  3 ++-
 .../org/apache/camel/impl/EndpointRegistry.java |  4 ++--
 .../camel/impl/SharedProducerServicePool.java   |  3 ++-
 .../DefaultManagementNamingStrategy.java        | 18 +++++----------
 .../management/ManagedManagementStrategy.java   |  6 +----
 .../mbean/ManagedEndpointRegistry.java          |  1 -
 .../camel/management/mbean/ManagedService.java  |  6 ++---
 .../mbean/ManagedStreamCachingStrategy.java     |  1 -
 .../mbean/ManagedTypeConverterRegistry.java     |  1 -
 .../camel/spi/ExecutorServiceManager.java       |  3 ++-
 .../apache/camel/spi/InflightRepository.java    |  4 ++--
 .../camel/spi/ManagementNamingStrategy.java     |  2 --
 .../org/apache/camel/spi/ShutdownStrategy.java  |  3 ++-
 .../apache/camel/spi/StreamCachingStrategy.java |  4 ++--
 .../apache/camel/spi/TypeConverterRegistry.java |  4 ++--
 .../camel/support/TimerListenerManager.java     |  3 ++-
 19 files changed, 61 insertions(+), 41 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/df4b8bb3/camel-core/src/main/java/org/apache/camel/StaticService.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/StaticService.java b/camel-core/src/main/java/org/apache/camel/StaticService.java
new file mode 100644
index 0000000..53b4638
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/StaticService.java
@@ -0,0 +1,23 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel;
+
+/**
+ * Marker for indicating the {@link Service} is a static service (only one instance per {@link CamelContext}).
+ */
+public interface StaticService extends Service {
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/df4b8bb3/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedServiceMBean.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedServiceMBean.java b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedServiceMBean.java
index 729f9b1..7f04c84 100644
--- a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedServiceMBean.java
+++ b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedServiceMBean.java
@@ -42,6 +42,9 @@ public interface ManagedServiceMBean {
     @ManagedAttribute(description = "Whether this service supports suspension")
     boolean isSupportSuspension();
 
+    @ManagedAttribute(description = "Whether this service is static")
+    boolean isStaticService();
+
     @ManagedAttribute(description = "Whether this service is suspended")
     boolean isSuspended();
 

http://git-wip-us.apache.org/repos/asf/camel/blob/df4b8bb3/camel-core/src/main/java/org/apache/camel/impl/DefaultExecutorServiceManager.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultExecutorServiceManager.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultExecutorServiceManager.java
index d8bd891..dd8797d 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultExecutorServiceManager.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultExecutorServiceManager.java
@@ -31,6 +31,7 @@ import java.util.concurrent.TimeUnit;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.NamedNode;
+import org.apache.camel.StaticService;
 import org.apache.camel.ThreadPoolRejectedPolicy;
 import org.apache.camel.model.OptionalIdentifiedDefinition;
 import org.apache.camel.model.ProcessorDefinition;
@@ -502,8 +503,13 @@ public class DefaultExecutorServiceManager extends ServiceSupport implements Exe
         } else if (source instanceof String) {
             id = (String) source;
         } else if (source != null) {
-            // fallback and use the simple class name with hashcode for the id so its unique for this given source
-            id = source.getClass().getSimpleName() + "(" + ObjectHelper.getIdentityHashCode(source) + ")";
+            if (source instanceof StaticService) {
+                // the source is static service so its name would be unique
+                id = source.getClass().getSimpleName();
+            } else {
+                // fallback and use the simple class name with hashcode for the id so its unique for this given source
+                id = source.getClass().getSimpleName() + "(" + ObjectHelper.getIdentityHashCode(source) + ")";
+            }
         } else {
             // no source, so fallback and use the simple class name from thread pool and its hashcode identity so its unique
             id = executorService.getClass().getSimpleName() + "(" + ObjectHelper.getIdentityHashCode(executorService) + ")";

http://git-wip-us.apache.org/repos/asf/camel/blob/df4b8bb3/camel-core/src/main/java/org/apache/camel/impl/DefaultPackageScanClassResolver.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultPackageScanClassResolver.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultPackageScanClassResolver.java
index 485ea17..c326f6d 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultPackageScanClassResolver.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultPackageScanClassResolver.java
@@ -37,6 +37,7 @@ import java.util.Set;
 import java.util.jar.JarEntry;
 import java.util.jar.JarInputStream;
 
+import org.apache.camel.StaticService;
 import org.apache.camel.impl.scan.AnnotatedWithAnyPackageScanFilter;
 import org.apache.camel.impl.scan.AnnotatedWithPackageScanFilter;
 import org.apache.camel.impl.scan.AssignableToPackageScanFilter;
@@ -54,7 +55,7 @@ import org.slf4j.LoggerFactory;
 /**
  * Default implement of {@link org.apache.camel.spi.PackageScanClassResolver}
  */
-public class DefaultPackageScanClassResolver extends ServiceSupport implements PackageScanClassResolver {
+public class DefaultPackageScanClassResolver extends ServiceSupport implements PackageScanClassResolver, StaticService {
 
     protected final transient Logger log = LoggerFactory.getLogger(getClass());
     private final Set<ClassLoader> classLoaders = new LinkedHashSet<ClassLoader>();

http://git-wip-us.apache.org/repos/asf/camel/blob/df4b8bb3/camel-core/src/main/java/org/apache/camel/impl/EndpointRegistry.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/EndpointRegistry.java b/camel-core/src/main/java/org/apache/camel/impl/EndpointRegistry.java
index 8440af8..6f4e6d7 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/EndpointRegistry.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/EndpointRegistry.java
@@ -20,7 +20,7 @@ import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
-import org.apache.camel.Service;
+import org.apache.camel.StaticService;
 import org.apache.camel.util.CamelContextHelper;
 import org.apache.camel.util.LRUSoftCache;
 import org.apache.camel.util.ServiceHelper;
@@ -30,7 +30,7 @@ import org.apache.camel.util.ServiceHelper;
  * <p/>
  * We use a soft reference cache to allow the JVM to re-claim memory if it runs low on memory.
  */
-public class EndpointRegistry extends LRUSoftCache<EndpointKey, Endpoint> implements Service {
+public class EndpointRegistry extends LRUSoftCache<EndpointKey, Endpoint> implements StaticService {
     private static final long serialVersionUID = 1L;
     private final CamelContext context;
 

http://git-wip-us.apache.org/repos/asf/camel/blob/df4b8bb3/camel-core/src/main/java/org/apache/camel/impl/SharedProducerServicePool.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/SharedProducerServicePool.java b/camel-core/src/main/java/org/apache/camel/impl/SharedProducerServicePool.java
index fa567f7..16313eb 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/SharedProducerServicePool.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/SharedProducerServicePool.java
@@ -17,6 +17,7 @@
 package org.apache.camel.impl;
 
 import org.apache.camel.ShutdownableService;
+import org.apache.camel.StaticService;
 
 /**
  * A shared {@link org.apache.camel.impl.DefaultProducerServicePool} which is used by
@@ -24,7 +25,7 @@ import org.apache.camel.ShutdownableService;
  *
  * @version 
  */
-public class SharedProducerServicePool extends DefaultProducerServicePool implements ShutdownableService {
+public class SharedProducerServicePool extends DefaultProducerServicePool implements ShutdownableService, StaticService {
 
     public SharedProducerServicePool() {
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/df4b8bb3/camel-core/src/main/java/org/apache/camel/management/DefaultManagementNamingStrategy.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementNamingStrategy.java b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementNamingStrategy.java
index 368ea4f..18fe1a6 100644
--- a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementNamingStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementNamingStrategy.java
@@ -31,6 +31,7 @@ import org.apache.camel.Processor;
 import org.apache.camel.Producer;
 import org.apache.camel.Route;
 import org.apache.camel.Service;
+import org.apache.camel.StaticService;
 import org.apache.camel.builder.ErrorHandlerBuilderRef;
 import org.apache.camel.spi.EventNotifier;
 import org.apache.camel.spi.InterceptStrategy;
@@ -245,19 +246,10 @@ public class DefaultManagementNamingStrategy implements ManagementNamingStrategy
         buffer.append(domainName).append(":");
         buffer.append(KEY_CONTEXT + "=").append(getContextId(context)).append(",");
         buffer.append(KEY_TYPE + "=" + TYPE_SERVICE + ",");
-        buffer.append(KEY_NAME + "=")
-            .append(service.getClass().getSimpleName())
-            .append("(").append(ObjectHelper.getIdentityHashCode(service)).append(")");
-        return createObjectName(buffer);
-    }
-
-    public ObjectName getObjectNameForSingleService(CamelContext context, Service service) throws MalformedObjectNameException {
-        StringBuilder buffer = new StringBuilder();
-        buffer.append(domainName).append(":");
-        buffer.append(KEY_CONTEXT + "=").append(getContextId(context)).append(",");
-        buffer.append(KEY_TYPE + "=" + TYPE_SERVICE + ",");
-        buffer.append(KEY_NAME + "=")
-            .append(service.getClass().getSimpleName());
+        buffer.append(KEY_NAME + "=").append(service.getClass().getSimpleName());
+        if (!(service instanceof StaticService)) {
+            buffer.append("(").append(ObjectHelper.getIdentityHashCode(service)).append(")");
+        }
         return createObjectName(buffer);
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/df4b8bb3/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java b/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
index ea0168e..c16e5c1 100644
--- a/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
@@ -133,11 +133,7 @@ public class ManagedManagementStrategy extends DefaultManagementStrategy {
             if (ms.getService() instanceof Endpoint) {
                 return null;
             }
-            if (ms.isSingle()) {
-                objectName = getManagementNamingStrategy().getObjectNameForSingleService(ms.getContext(), ms.getService());
-            } else {
-                objectName = getManagementNamingStrategy().getObjectNameForService(ms.getContext(), ms.getService());
-            }
+            objectName = getManagementNamingStrategy().getObjectNameForService(ms.getContext(), ms.getService());
         }
 
         return nameType.cast(objectName);

http://git-wip-us.apache.org/repos/asf/camel/blob/df4b8bb3/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEndpointRegistry.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEndpointRegistry.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEndpointRegistry.java
index 46758ad..80cd79d 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEndpointRegistry.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedEndpointRegistry.java
@@ -31,7 +31,6 @@ public class ManagedEndpointRegistry extends ManagedService implements ManagedEn
     public ManagedEndpointRegistry(CamelContext context, EndpointRegistry endpointRegistry) {
         super(context, endpointRegistry);
         this.endpointRegistry = endpointRegistry;
-        this.single = true;
     }
 
     public EndpointRegistry getEndpointRegistry() {

http://git-wip-us.apache.org/repos/asf/camel/blob/df4b8bb3/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedService.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedService.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedService.java
index ec2f891..1eb11b7 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedService.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedService.java
@@ -21,6 +21,7 @@ import org.apache.camel.Route;
 import org.apache.camel.Service;
 import org.apache.camel.ServiceStatus;
 import org.apache.camel.StatefulService;
+import org.apache.camel.StaticService;
 import org.apache.camel.SuspendableService;
 import org.apache.camel.api.management.ManagedInstance;
 import org.apache.camel.api.management.ManagedResource;
@@ -32,7 +33,6 @@ public class ManagedService implements ManagedInstance, ManagedServiceMBean {
     private final CamelContext context;
     private final Service service;
     private Route route;
-    protected boolean single;
 
     public ManagedService(CamelContext context, Service service) {
         this.context = context;
@@ -43,8 +43,8 @@ public class ManagedService implements ManagedInstance, ManagedServiceMBean {
         // do nothing
     }
 
-    public boolean isSingle() {
-        return single;
+    public boolean isStaticService() {
+        return service instanceof StaticService;
     }
 
     public Service getService() {

http://git-wip-us.apache.org/repos/asf/camel/blob/df4b8bb3/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedStreamCachingStrategy.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedStreamCachingStrategy.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedStreamCachingStrategy.java
index 5fec257..b57a010 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedStreamCachingStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedStreamCachingStrategy.java
@@ -32,7 +32,6 @@ public class ManagedStreamCachingStrategy extends ManagedService implements Mana
         super(camelContext, streamCachingStrategy);
         this.camelContext = camelContext;
         this.streamCachingStrategy = streamCachingStrategy;
-        this.single = true;
     }
 
     public void init(ManagementStrategy strategy) {

http://git-wip-us.apache.org/repos/asf/camel/blob/df4b8bb3/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTypeConverterRegistry.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTypeConverterRegistry.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTypeConverterRegistry.java
index e808493..55af467 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTypeConverterRegistry.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedTypeConverterRegistry.java
@@ -32,7 +32,6 @@ public class ManagedTypeConverterRegistry extends ManagedService implements Mana
     public ManagedTypeConverterRegistry(CamelContext context, TypeConverterRegistry registry) {
         super(context, registry);
         this.registry = registry;
-        this.single = true;
     }
 
     public TypeConverterRegistry getRegistry() {

http://git-wip-us.apache.org/repos/asf/camel/blob/df4b8bb3/camel-core/src/main/java/org/apache/camel/spi/ExecutorServiceManager.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ExecutorServiceManager.java b/camel-core/src/main/java/org/apache/camel/spi/ExecutorServiceManager.java
index 28cce20..0f0f929 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/ExecutorServiceManager.java
+++ b/camel-core/src/main/java/org/apache/camel/spi/ExecutorServiceManager.java
@@ -21,6 +21,7 @@ import java.util.concurrent.ExecutorService;
 import java.util.concurrent.ScheduledExecutorService;
 
 import org.apache.camel.ShutdownableService;
+import org.apache.camel.StaticService;
 
 /**
  * Strategy to create thread pools.
@@ -50,7 +51,7 @@ import org.apache.camel.ShutdownableService;
  *
  * @see ThreadPoolFactory
  */
-public interface ExecutorServiceManager extends ShutdownableService {
+public interface ExecutorServiceManager extends ShutdownableService, StaticService {
 
     /**
      * Gets the {@link ThreadPoolFactory} to use for creating the thread pools.

http://git-wip-us.apache.org/repos/asf/camel/blob/df4b8bb3/camel-core/src/main/java/org/apache/camel/spi/InflightRepository.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/spi/InflightRepository.java b/camel-core/src/main/java/org/apache/camel/spi/InflightRepository.java
index 018cfa9..cf22cfa 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/InflightRepository.java
+++ b/camel-core/src/main/java/org/apache/camel/spi/InflightRepository.java
@@ -18,14 +18,14 @@ package org.apache.camel.spi;
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
-import org.apache.camel.Service;
+import org.apache.camel.StaticService;
 
 /**
  * A repository which tracks in flight {@link Exchange}s.
  *
  * @version 
  */
-public interface InflightRepository extends Service {
+public interface InflightRepository extends StaticService {
 
     /**
      * Adds the exchange to the inflight registry to the total counter

http://git-wip-us.apache.org/repos/asf/camel/blob/df4b8bb3/camel-core/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java b/camel-core/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java
index 8cb0045..6d5d4ff 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java
@@ -60,8 +60,6 @@ public interface ManagementNamingStrategy {
 
     ObjectName getObjectNameForService(CamelContext context, Service service) throws MalformedObjectNameException;
 
-    ObjectName getObjectNameForSingleService(CamelContext context, Service service) throws MalformedObjectNameException;
-
     ObjectName getObjectNameForThreadPool(CamelContext context, ThreadPoolExecutor threadPool, String id, String sourceId) throws MalformedObjectNameException;
 
     ObjectName getObjectNameForEventNotifier(CamelContext context, EventNotifier eventNotifier) throws MalformedObjectNameException;

http://git-wip-us.apache.org/repos/asf/camel/blob/df4b8bb3/camel-core/src/main/java/org/apache/camel/spi/ShutdownStrategy.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/spi/ShutdownStrategy.java b/camel-core/src/main/java/org/apache/camel/spi/ShutdownStrategy.java
index 0fec17b..c1e7632 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/ShutdownStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/spi/ShutdownStrategy.java
@@ -21,6 +21,7 @@ import java.util.concurrent.TimeUnit;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Service;
+import org.apache.camel.StaticService;
 
 /**
  * Pluggable shutdown strategy executed during shutdown of routes.
@@ -38,7 +39,7 @@ import org.apache.camel.Service;
  * @version 
  * @see org.apache.camel.spi.ShutdownAware
  */
-public interface ShutdownStrategy extends Service {
+public interface ShutdownStrategy extends StaticService {
 
     /**
      * Shutdown the routes, forcing shutdown being more aggressive, if timeout occurred.

http://git-wip-us.apache.org/repos/asf/camel/blob/df4b8bb3/camel-core/src/main/java/org/apache/camel/spi/StreamCachingStrategy.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/spi/StreamCachingStrategy.java b/camel-core/src/main/java/org/apache/camel/spi/StreamCachingStrategy.java
index 089ad09..e6d851c 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/StreamCachingStrategy.java
+++ b/camel-core/src/main/java/org/apache/camel/spi/StreamCachingStrategy.java
@@ -19,13 +19,13 @@ package org.apache.camel.spi;
 import java.io.File;
 
 import org.apache.camel.Exchange;
-import org.apache.camel.Service;
+import org.apache.camel.StaticService;
 import org.apache.camel.StreamCache;
 
 /**
  * Strategy for using <a href="http://camel.apache.org/stream-caching.html">stream caching</a>.
  */
-public interface StreamCachingStrategy extends Service {
+public interface StreamCachingStrategy extends StaticService {
 
     /**
      * Utilization statistics of stream caching.

http://git-wip-us.apache.org/repos/asf/camel/blob/df4b8bb3/camel-core/src/main/java/org/apache/camel/spi/TypeConverterRegistry.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/spi/TypeConverterRegistry.java b/camel-core/src/main/java/org/apache/camel/spi/TypeConverterRegistry.java
index b7c90e2..39c7dcd 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/TypeConverterRegistry.java
+++ b/camel-core/src/main/java/org/apache/camel/spi/TypeConverterRegistry.java
@@ -16,7 +16,7 @@
  */
 package org.apache.camel.spi;
 
-import org.apache.camel.Service;
+import org.apache.camel.StaticService;
 import org.apache.camel.TypeConverter;
 
 /**
@@ -27,7 +27,7 @@ import org.apache.camel.TypeConverter;
  *
  * @version 
  */
-public interface TypeConverterRegistry extends Service {
+public interface TypeConverterRegistry extends StaticService {
 
     /**
      * Utilization statistics of the this registry.

http://git-wip-us.apache.org/repos/asf/camel/blob/df4b8bb3/camel-core/src/main/java/org/apache/camel/support/TimerListenerManager.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/support/TimerListenerManager.java b/camel-core/src/main/java/org/apache/camel/support/TimerListenerManager.java
index 49a481c..ad7794d 100644
--- a/camel-core/src/main/java/org/apache/camel/support/TimerListenerManager.java
+++ b/camel-core/src/main/java/org/apache/camel/support/TimerListenerManager.java
@@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
+import org.apache.camel.StaticService;
 import org.apache.camel.TimerListener;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
@@ -38,7 +39,7 @@ import org.slf4j.LoggerFactory;
  *
  * @see TimerListener
  */
-public class TimerListenerManager extends ServiceSupport implements Runnable, CamelContextAware {
+public class TimerListenerManager extends ServiceSupport implements Runnable, CamelContextAware, StaticService {
 
     private static final Logger LOG = LoggerFactory.getLogger(TimerListenerManager.class);
     private final Set<TimerListener> listeners = new LinkedHashSet<TimerListener>();