CAMEL-9789: Fixed proxy/export to startup and shutdown correctly. That also fixes the JMS test failure.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/342c2182 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/342c2182 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/342c2182 Branch: refs/heads/master Commit: 342c21829ba595ff8927fd134d8a6aab8c691972 Parents: f4146a7 Author: Claus Ibsen <davscl...@apache.org> Authored: Sat Apr 9 14:09:54 2016 +0200 Committer: Claus Ibsen <davscl...@apache.org> Committed: Sat Apr 9 14:09:54 2016 +0200 ---------------------------------------------------------------------- .../camel/blueprint/CamelProxyFactoryBean.java | 7 +++++-- .../apache/camel/component/jms/remoting/ISay.java | 7 +++---- .../component/jms/remoting/JmsRemotingTest.java | 4 ++-- .../camel/component/jms/remoting/SayService.java | 17 ++++------------- .../spring/remoting/CamelProxyFactoryBean.java | 7 +++++-- .../spring/remoting/CamelServiceExporter.java | 14 +++++++++++--- 6 files changed, 30 insertions(+), 26 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/342c2182/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelProxyFactoryBean.java ---------------------------------------------------------------------- diff --git a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelProxyFactoryBean.java b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelProxyFactoryBean.java index 6491bbc..8f23210 100644 --- a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelProxyFactoryBean.java +++ b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelProxyFactoryBean.java @@ -109,8 +109,11 @@ public class CamelProxyFactoryBean extends AbstractCamelFactoryBean<Object> { boolean bind = getBinding() != null ? getBinding() : true; try { + // need to start endpoint before we create producer + ServiceHelper.startService(endpoint); producer = endpoint.createProducer(); - ServiceHelper.startService(producer); + // add and start producer + getCamelContext().addService(producer, true, true); Class<?> clazz = blueprintContainer.loadClass(getServiceInterface()); serviceProxy = ProxyHelper.createProxy(endpoint, bind, producer, clazz); } catch (Exception e) { @@ -119,7 +122,7 @@ public class CamelProxyFactoryBean extends AbstractCamelFactoryBean<Object> { } public void destroy() throws Exception { - ServiceHelper.stopService(producer); + // we let CamelContext manage the lifecycle of the producer and shut it down when Camel stops } public String getServiceUrl() { http://git-wip-us.apache.org/repos/asf/camel/blob/342c2182/components/camel-jms/src/test/java/org/apache/camel/component/jms/remoting/ISay.java ---------------------------------------------------------------------- diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/remoting/ISay.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/remoting/ISay.java index ed8629e..b15d2a5 100644 --- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/remoting/ISay.java +++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/remoting/ISay.java @@ -19,9 +19,8 @@ package org.apache.camel.component.jms.remoting; import java.rmi.Remote; import java.rmi.RemoteException; -/** - * - */ public interface ISay extends Remote { - String say() throws RemoteException; + + String say(String name) throws RemoteException; + } http://git-wip-us.apache.org/repos/asf/camel/blob/342c2182/components/camel-jms/src/test/java/org/apache/camel/component/jms/remoting/JmsRemotingTest.java ---------------------------------------------------------------------- diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/remoting/JmsRemotingTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/remoting/JmsRemotingTest.java index 842c574..b15c34c 100644 --- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/remoting/JmsRemotingTest.java +++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/remoting/JmsRemotingTest.java @@ -32,7 +32,7 @@ public class JmsRemotingTest extends CamelSpringTestSupport { @Test public void testRemoting() throws Exception { ISay proxy = applicationContext.getBean("sayProxy", ISay.class); - String rc = proxy.say(); - assertEquals("Hello", rc); + String rc = proxy.say("Camel"); + assertEquals("Hello Camel", rc); } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/camel/blob/342c2182/components/camel-jms/src/test/java/org/apache/camel/component/jms/remoting/SayService.java ---------------------------------------------------------------------- diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/remoting/SayService.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/remoting/SayService.java index 30e2c2a..7f649ab 100644 --- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/remoting/SayService.java +++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/remoting/SayService.java @@ -19,26 +19,17 @@ package org.apache.camel.component.jms.remoting; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -/** - * - */ public class SayService implements ISay { private static final Logger LOG = LoggerFactory.getLogger(SayService.class); - - String message = "Hello"; + private String message = "Hello"; public SayService() { } - public SayService(String message) { - this.message = message; - } - - public String say() { - LOG.info("Invoking say() method with message: " + message); - - return message; + public String say(String name) { + LOG.info("Invoking say() method with {}", name); + return message + " " + name; } public String getMessage() { http://git-wip-us.apache.org/repos/asf/camel/blob/342c2182/components/camel-spring/src/main/java/org/apache/camel/spring/remoting/CamelProxyFactoryBean.java ---------------------------------------------------------------------- diff --git a/components/camel-spring/src/main/java/org/apache/camel/spring/remoting/CamelProxyFactoryBean.java b/components/camel-spring/src/main/java/org/apache/camel/spring/remoting/CamelProxyFactoryBean.java index d2d7132..eac6e40 100644 --- a/components/camel-spring/src/main/java/org/apache/camel/spring/remoting/CamelProxyFactoryBean.java +++ b/components/camel-spring/src/main/java/org/apache/camel/spring/remoting/CamelProxyFactoryBean.java @@ -75,8 +75,11 @@ public class CamelProxyFactoryBean extends UrlBasedRemoteAccessor implements Fac boolean bind = getBinding() != null ? getBinding() : true; try { + // need to start endpoint before we create producer + ServiceHelper.startService(endpoint); producer = endpoint.createProducer(); - ServiceHelper.startService(producer); + // add and start producer + camelContext.addService(producer, true, true); serviceProxy = ProxyHelper.createProxy(endpoint, bind, producer, getServiceInterface()); } catch (Exception e) { throw new FailedToCreateProducerException(endpoint, e); @@ -84,7 +87,7 @@ public class CamelProxyFactoryBean extends UrlBasedRemoteAccessor implements Fac } public void destroy() throws Exception { - ServiceHelper.stopService(producer); + // we let CamelContext manage the lifecycle of the producer and shut it down when Camel stops } public Class<?> getServiceInterface() { http://git-wip-us.apache.org/repos/asf/camel/blob/342c2182/components/camel-spring/src/main/java/org/apache/camel/spring/remoting/CamelServiceExporter.java ---------------------------------------------------------------------- diff --git a/components/camel-spring/src/main/java/org/apache/camel/spring/remoting/CamelServiceExporter.java b/components/camel-spring/src/main/java/org/apache/camel/spring/remoting/CamelServiceExporter.java index fd5bb4e..1caee1a 100644 --- a/components/camel-spring/src/main/java/org/apache/camel/spring/remoting/CamelServiceExporter.java +++ b/components/camel-spring/src/main/java/org/apache/camel/spring/remoting/CamelServiceExporter.java @@ -20,6 +20,7 @@ import org.apache.camel.CamelContext; import org.apache.camel.CamelContextAware; import org.apache.camel.Consumer; import org.apache.camel.Endpoint; +import org.apache.camel.FailedToCreateConsumerException; import org.apache.camel.component.bean.BeanProcessor; import org.apache.camel.spring.util.CamelContextResolverHelper; import org.apache.camel.util.CamelContextHelper; @@ -98,12 +99,19 @@ public class CamelServiceExporter extends RemoteExporter implements Initializing notNull(getService(), "service"); Object proxy = getProxyForService(); - consumer = endpoint.createConsumer(new BeanProcessor(proxy, camelContext)); - ServiceHelper.startService(consumer); + try { + // need to start endpoint before we create consumer + ServiceHelper.startService(endpoint); + consumer = endpoint.createConsumer(new BeanProcessor(proxy, camelContext)); + // add and start consumer + camelContext.addService(consumer, true, true); + } catch (Exception e) { + throw new FailedToCreateConsumerException(endpoint, e); + } } public void destroy() throws Exception { - ServiceHelper.startService(consumer); + // we let CamelContext manage the lifecycle of the consumer and shut it down when Camel stops } }