[CAMEL-8984] Explicitly start OsgiCamelContextPublisher, it didn't unregister OSGi service
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/9aa1ab93 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/9aa1ab93 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/9aa1ab93 Branch: refs/heads/master Commit: 9aa1ab935a24f210a8592e08a34fc6cc5ed10eea Parents: ab84590 Author: Grzegorz Grzybek <gr.grzy...@gmail.com> Authored: Mon Jul 20 10:22:21 2015 +0200 Committer: Grzegorz Grzybek <gr.grzy...@gmail.com> Committed: Mon Jul 20 14:51:37 2015 +0200 ---------------------------------------------------------------------- .../camel/blueprint/CamelContextFactoryBean.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/9aa1ab93/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelContextFactoryBean.java ---------------------------------------------------------------------- diff --git a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelContextFactoryBean.java b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelContextFactoryBean.java index 2ae5729..1cdcf19 100644 --- a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelContextFactoryBean.java +++ b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelContextFactoryBean.java @@ -179,6 +179,8 @@ public class CamelContextFactoryBean extends AbstractCamelContextFactoryBean<Blu private BundleContext bundleContext; @XmlTransient private boolean implicitId; + @XmlTransient + private OsgiCamelContextPublisher osgiCamelContextPublisher; public Class<BlueprintCamelContext> getObjectType() { return BlueprintCamelContext.class; @@ -301,7 +303,9 @@ public class CamelContextFactoryBean extends AbstractCamelContextFactoryBean<Blu ClassLoader cl = new BundleDelegatingClassLoader(bundleContext.getBundle()); LOG.debug("Set the application context classloader to: {}", cl); getContext().setApplicationContextClassLoader(cl); - getContext().getManagementStrategy().addEventNotifier(new OsgiCamelContextPublisher(bundleContext)); + osgiCamelContextPublisher = new OsgiCamelContextPublisher(bundleContext); + osgiCamelContextPublisher.start(); + getContext().getManagementStrategy().addEventNotifier(osgiCamelContextPublisher); try { getClass().getClassLoader().loadClass("org.osgi.service.event.EventAdmin"); getContext().getManagementStrategy().addEventNotifier(new OsgiEventAdminNotifier(bundleContext)); @@ -313,6 +317,14 @@ public class CamelContextFactoryBean extends AbstractCamelContextFactoryBean<Blu setupRoutes(); } + @Override + public void destroy() throws Exception { + super.destroy(); + if (osgiCamelContextPublisher != null) { + osgiCamelContextPublisher.shutdown(); + } + } + public String getDependsOn() { return dependsOn; }