Author: gnodet
Date: Thu Sep 7 04:51:33 2006
New Revision: 441058
URL: http://svn.apache.org/viewvc?view=rev&rev=441058
Log:
SM-566: JmsReceiverComponent trying to receive message before its JBI
properties have been fully initialised
Modified:
incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/jms/JmsInUsingJCABinding.java
incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/jms/JmsReceiverComponent.java
incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/jms/JmsServiceComponent.java
Modified:
incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/jms/JmsInUsingJCABinding.java
URL:
http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/jms/JmsInUsingJCABinding.java?view=diff&rev=441058&r1=441057&r2=441058
==============================================================================
---
incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/jms/JmsInUsingJCABinding.java
(original)
+++
incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/jms/JmsInUsingJCABinding.java
Thu Sep 7 04:51:33 2006
@@ -54,9 +54,27 @@
jcaConnector.setEndpointFactory(new SingletonEndpointFactory(this,
transactionManager));
try {
jcaConnector.afterPropertiesSet();
+ } catch (Exception e) {
+ throw new JBIException("Unable to initialize jca connector", e);
+ }
+ super.init();
+ }
+
+ public void start() throws JBIException {
+ try {
jcaConnector.start();
} catch (Exception e) {
- throw new JBIException("Unable to start jca connector", e);
+ throw new JBIException("Unable to start jca connector", e);
+ }
+ super.start();
+ }
+
+ public void stop() throws JBIException {
+ super.stop();
+ try {
+ jcaConnector.destroy();
+ } catch (Exception e) {
+ throw new JBIException("Unable to stop jca connector", e);
}
}
Modified:
incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/jms/JmsReceiverComponent.java
URL:
http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/jms/JmsReceiverComponent.java?view=diff&rev=441058&r1=441057&r2=441058
==============================================================================
---
incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/jms/JmsReceiverComponent.java
(original)
+++
incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/jms/JmsReceiverComponent.java
Thu Sep 7 04:51:33 2006
@@ -16,23 +16,24 @@
*/
package org.apache.servicemix.components.jms;
-import org.springframework.beans.factory.DisposableBean;
-import org.springframework.beans.factory.InitializingBean;
-import org.springframework.jms.core.JmsTemplate;
-
+import javax.jbi.JBIException;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
+import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.Session;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.jms.core.JmsTemplate;
+
/**
* A component which uses a [EMAIL PROTECTED] JmsTemplate} to consume messages
from a
* destination.
*
* @version $Revision$
*/
-public class JmsReceiverComponent extends JmsInBinding implements
InitializingBean, DisposableBean {
+public class JmsReceiverComponent extends JmsInBinding implements
InitializingBean {
private JmsTemplate template;
private String selector;
private MessageConsumer consumer;
@@ -88,12 +89,20 @@
} else { // JMS 1.1 style
consumer = session.createConsumer(defaultDestination, selector);
}
-
- consumer.setMessageListener(this);
- connection.start();
+ }
+
+ public void start() throws JBIException {
+ // Start receiving messages only when the component has actually been
started.
+ super.start();
+ try {
+ connection.start();
+ consumer.setMessageListener(this);
+ } catch (JMSException e) {
+ throw new JBIException("Unable to start jms component");
+ }
}
- public void destroy() throws Exception {
+ public void stop() throws JBIException {
try {
if (connection != null) {
connection.close();
@@ -102,6 +111,8 @@
} else if (consumer != null) {
consumer.close();
}
+ } catch (JMSException e) {
+ throw new JBIException("Unable to stop jms component");
} finally {
connection = null;
session = null;
Modified:
incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/jms/JmsServiceComponent.java
URL:
http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/jms/JmsServiceComponent.java?view=diff&rev=441058&r1=441057&r2=441058
==============================================================================
---
incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/jms/JmsServiceComponent.java
(original)
+++
incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/jms/JmsServiceComponent.java
Thu Sep 7 04:51:33 2006
@@ -34,11 +34,11 @@
import javax.resource.spi.work.WorkException;
import javax.resource.spi.work.WorkManager;
import javax.xml.transform.TransformerException;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.servicemix.components.util.ComponentSupport;
import org.apache.servicemix.jbi.framework.ComponentContextImpl;
-import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.jms.JmsException;
import org.springframework.jms.core.JmsTemplate;
@@ -51,7 +51,7 @@
*
* @version $Revision$
*/
-public class JmsServiceComponent extends ComponentSupport implements
MessageListener, InitializingBean, DisposableBean {
+public class JmsServiceComponent extends ComponentSupport implements
MessageListener, InitializingBean {
private static final Log log =
LogFactory.getLog(JmsServiceComponent.class);
private DestinationChooser destinationChooser;
private JmsMarshaler marshaler = new JmsMarshaler();
@@ -115,16 +115,20 @@
} else { // JMS 1.1 style
consumer = session.createConsumer(defaultDestination, selector);
}
+ }
- consumer.setMessageListener(this);
- connection.start();
+ public void start() throws JBIException {
+ // Start receiving messages only when the component has actually been
started.
+ super.start();
+ try {
+ connection.start();
+ consumer.setMessageListener(this);
+ } catch (JMSException e) {
+ throw new JBIException("Unable to start jms component");
+ }
}
- /**
- * called by spring framework on disposal
- * @throws Exception
- */
- public void destroy() throws Exception {
+ public void stop() throws JBIException {
try {
if (connection != null) {
connection.close();
@@ -133,6 +137,8 @@
} else if (consumer != null) {
consumer.close();
}
+ } catch (JMSException e) {
+ throw new JBIException("Unable to stop jms component");
} finally {
connection = null;
session = null;