You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by gn...@apache.org on 2006/04/03 11:22:31 UTC
svn commit: r390987 - in /incubator/servicemix/trunk/servicemix-jms/src:
main/java/org/apache/servicemix/jms/ test/java/org/apache/servicemix/jms/
test/resources/org/apache/servicemix/jms/
Author: gnodet
Date: Mon Apr 3 02:22:21 2006
New Revision: 390987
URL: http://svn.apache.org/viewcvs?rev=390987&view=rev
Log:
Allow configuring the connectionFactory and destination from spring on the jms endpoint .
Add spring example.
Added:
incubator/servicemix/trunk/servicemix-jms/src/test/java/org/apache/servicemix/jms/JmsSpringTest.java
incubator/servicemix/trunk/servicemix-jms/src/test/resources/org/apache/servicemix/jms/spring.xml
Modified:
incubator/servicemix/trunk/servicemix-jms/src/main/java/org/apache/servicemix/jms/AbstractJmsProcessor.java
incubator/servicemix/trunk/servicemix-jms/src/main/java/org/apache/servicemix/jms/JmsEndpoint.java
incubator/servicemix/trunk/servicemix-jms/src/main/java/org/apache/servicemix/jms/MultiplexingConsumerProcessor.java
incubator/servicemix/trunk/servicemix-jms/src/main/java/org/apache/servicemix/jms/MultiplexingProviderProcessor.java
Modified: incubator/servicemix/trunk/servicemix-jms/src/main/java/org/apache/servicemix/jms/AbstractJmsProcessor.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-jms/src/main/java/org/apache/servicemix/jms/AbstractJmsProcessor.java?rev=390987&r1=390986&r2=390987&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-jms/src/main/java/org/apache/servicemix/jms/AbstractJmsProcessor.java (original)
+++ incubator/servicemix/trunk/servicemix-jms/src/main/java/org/apache/servicemix/jms/AbstractJmsProcessor.java Mon Apr 3 02:22:21 2006
@@ -37,14 +37,19 @@
}
public void start() throws Exception {
- Hashtable props = new Hashtable();
- if (endpoint.getInitialContextFactory() != null && endpoint.getJndiProviderURL() != null) {
- props.put(Context.INITIAL_CONTEXT_FACTORY, endpoint.getInitialContextFactory());
- props.put(Context.PROVIDER_URL, endpoint.getJndiProviderURL());
- }
- InitialContext ctx = new InitialContext(props);
+ InitialContext ctx = null;
+ ConnectionFactory connectionFactory = null;
try {
- ConnectionFactory connectionFactory = (ConnectionFactory) ctx.lookup(endpoint.getJndiConnectionFactoryName());
+ connectionFactory = endpoint.getConnectionFactory();
+ if (connectionFactory == null) {
+ Hashtable props = new Hashtable();
+ if (endpoint.getInitialContextFactory() != null && endpoint.getJndiProviderURL() != null) {
+ props.put(Context.INITIAL_CONTEXT_FACTORY, endpoint.getInitialContextFactory());
+ props.put(Context.PROVIDER_URL, endpoint.getJndiProviderURL());
+ }
+ ctx = new InitialContext(props);
+ connectionFactory = (ConnectionFactory) ctx.lookup(endpoint.getJndiConnectionFactoryName());
+ }
connection = connectionFactory.createConnection();
connection.start();
doStart(ctx);
@@ -56,7 +61,9 @@
}
throw e;
} finally {
- ctx.close();
+ if (ctx != null) {
+ ctx.close();
+ }
}
}
Modified: incubator/servicemix/trunk/servicemix-jms/src/main/java/org/apache/servicemix/jms/JmsEndpoint.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-jms/src/main/java/org/apache/servicemix/jms/JmsEndpoint.java?rev=390987&r1=390986&r2=390987&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-jms/src/main/java/org/apache/servicemix/jms/JmsEndpoint.java (original)
+++ incubator/servicemix/trunk/servicemix-jms/src/main/java/org/apache/servicemix/jms/JmsEndpoint.java Mon Apr 3 02:22:21 2006
@@ -18,6 +18,8 @@
import java.util.Iterator;
import javax.jbi.servicedesc.ServiceEndpoint;
+import javax.jms.ConnectionFactory;
+import javax.jms.Destination;
import javax.wsdl.Definition;
import javax.wsdl.Port;
import javax.wsdl.Service;
@@ -44,6 +46,9 @@
protected String jndiConnectionFactoryName;
protected String jndiDestinationName;
protected String jmsProviderDestinationName;
+ // Spring configuration
+ protected ConnectionFactory connectionFactory;
+ protected Destination destination;
public JmsEndpoint() {
}
@@ -146,6 +151,34 @@
}
/**
+ * @return Returns the connectionFactory.
+ */
+ public ConnectionFactory getConnectionFactory() {
+ return connectionFactory;
+ }
+
+ /**
+ * @param connectionFactory The connectionFactory to set.
+ */
+ public void setConnectionFactory(ConnectionFactory connectionFactory) {
+ this.connectionFactory = connectionFactory;
+ }
+
+ /**
+ * @return Returns the destination.
+ */
+ public Destination getDestination() {
+ return destination;
+ }
+
+ /**
+ * @param destination The destination to set.
+ */
+ public void setDestination(Destination destination) {
+ this.destination = destination;
+ }
+
+ /**
* @org.apache.xbean.Property alias="role"
* @param role
*/
@@ -216,4 +249,5 @@
"address: " + jndiDestinationName + "(" + destinationStyle + "), " +
"soap: " + soap + "]";
}
+
}
Modified: incubator/servicemix/trunk/servicemix-jms/src/main/java/org/apache/servicemix/jms/MultiplexingConsumerProcessor.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-jms/src/main/java/org/apache/servicemix/jms/MultiplexingConsumerProcessor.java?rev=390987&r1=390986&r2=390987&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-jms/src/main/java/org/apache/servicemix/jms/MultiplexingConsumerProcessor.java (original)
+++ incubator/servicemix/trunk/servicemix-jms/src/main/java/org/apache/servicemix/jms/MultiplexingConsumerProcessor.java Mon Apr 3 02:22:21 2006
@@ -73,16 +73,19 @@
protected void doStart(InitialContext ctx) throws Exception {
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
- if (endpoint.getJndiDestinationName() != null) {
- destination = (Destination) ctx.lookup(endpoint.getJndiDestinationName());
- } else if (endpoint.getJmsProviderDestinationName() != null) {
- if (STYLE_QUEUE.equals(endpoint.getDestinationStyle())) {
- destination = session.createQueue(endpoint.getJmsProviderDestinationName());
+ destination = endpoint.getDestination();
+ if (destination == null) {
+ if (endpoint.getJndiDestinationName() != null) {
+ destination = (Destination) ctx.lookup(endpoint.getJndiDestinationName());
+ } else if (endpoint.getJmsProviderDestinationName() != null) {
+ if (STYLE_QUEUE.equals(endpoint.getDestinationStyle())) {
+ destination = session.createQueue(endpoint.getJmsProviderDestinationName());
+ } else {
+ destination = session.createTopic(endpoint.getJmsProviderDestinationName());
+ }
} else {
- destination = session.createTopic(endpoint.getJmsProviderDestinationName());
+ throw new IllegalStateException("No destination provided");
}
- } else {
- throw new IllegalStateException("No destination provided");
}
consumer = session.createConsumer(destination);
consumer.setMessageListener(this);
Modified: incubator/servicemix/trunk/servicemix-jms/src/main/java/org/apache/servicemix/jms/MultiplexingProviderProcessor.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-jms/src/main/java/org/apache/servicemix/jms/MultiplexingProviderProcessor.java?rev=390987&r1=390986&r2=390987&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-jms/src/main/java/org/apache/servicemix/jms/MultiplexingProviderProcessor.java (original)
+++ incubator/servicemix/trunk/servicemix-jms/src/main/java/org/apache/servicemix/jms/MultiplexingProviderProcessor.java Mon Apr 3 02:22:21 2006
@@ -75,16 +75,19 @@
protected void doStart(InitialContext ctx) throws Exception {
channel = endpoint.getServiceUnit().getComponent().getComponentContext().getDeliveryChannel();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
- if (endpoint.getJndiDestinationName() != null) {
- destination = (Destination) ctx.lookup(endpoint.getJndiDestinationName());
- } else if (endpoint.getJmsProviderDestinationName() != null) {
- if (STYLE_QUEUE.equals(endpoint.getDestinationStyle())) {
- destination = session.createQueue(endpoint.getJmsProviderDestinationName());
+ destination = endpoint.getDestination();
+ if (destination == null) {
+ if (endpoint.getJndiDestinationName() != null) {
+ destination = (Destination) ctx.lookup(endpoint.getJndiDestinationName());
+ } else if (endpoint.getJmsProviderDestinationName() != null) {
+ if (STYLE_QUEUE.equals(endpoint.getDestinationStyle())) {
+ destination = session.createQueue(endpoint.getJmsProviderDestinationName());
+ } else {
+ destination = session.createTopic(endpoint.getJmsProviderDestinationName());
+ }
} else {
- destination = session.createTopic(endpoint.getJmsProviderDestinationName());
+ throw new IllegalStateException("No destination provided");
}
- } else {
- throw new IllegalStateException("No destination provided");
}
if (destination instanceof Queue) {
replyToDestination = session.createTemporaryQueue();
Added: incubator/servicemix/trunk/servicemix-jms/src/test/java/org/apache/servicemix/jms/JmsSpringTest.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-jms/src/test/java/org/apache/servicemix/jms/JmsSpringTest.java?rev=390987&view=auto
==============================================================================
--- incubator/servicemix/trunk/servicemix-jms/src/test/java/org/apache/servicemix/jms/JmsSpringTest.java (added)
+++ incubator/servicemix/trunk/servicemix-jms/src/test/java/org/apache/servicemix/jms/JmsSpringTest.java Mon Apr 3 02:22:21 2006
@@ -0,0 +1,47 @@
+package org.apache.servicemix.jms;
+
+import javax.jbi.messaging.ExchangeStatus;
+import javax.jbi.messaging.InOut;
+import javax.naming.Context;
+import javax.xml.namespace.QName;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.servicemix.client.DefaultServiceMixClient;
+import org.apache.servicemix.jbi.jaxp.SourceTransformer;
+import org.apache.servicemix.jbi.jaxp.StringSource;
+import org.apache.servicemix.tck.SpringTestSupport;
+import org.apache.xbean.spring.context.ClassPathXmlApplicationContext;
+import org.apache.xbean.spring.jndi.SpringInitialContextFactory;
+import org.springframework.context.support.AbstractXmlApplicationContext;
+
+public class JmsSpringTest extends SpringTestSupport {
+
+ private static Log logger = LogFactory.getLog(JmsSpringTest.class);
+
+ public void test() throws Exception {
+ DefaultServiceMixClient client = new DefaultServiceMixClient(jbi);
+ InOut me = client.createInOutExchange();
+ me.setService(new QName("http://test", "MyProviderService"));
+ me.getInMessage().setContent(new StringSource("<echo xmlns='http://test'><echoin0>world</echoin0></echo>"));
+ client.sendSync(me);
+ if (me.getStatus() == ExchangeStatus.ERROR) {
+ if (me.getFault() != null) {
+ fail("Received fault: " + new SourceTransformer().toString(me.getFault().getContent()));
+ } else if (me.getError() != null) {
+ throw me.getError();
+ } else {
+ fail("Received ERROR status");
+ }
+ } else {
+ logger.info(new SourceTransformer().toString(me.getOutMessage().getContent()));
+ }
+ }
+
+ protected AbstractXmlApplicationContext createBeanFactory() {
+ System.setProperty(Context.INITIAL_CONTEXT_FACTORY, SpringInitialContextFactory.class.getName());
+ System.setProperty(Context.PROVIDER_URL, "org/apache/servicemix/jms/jndi.xml");
+ return new ClassPathXmlApplicationContext("org/apache/servicemix/jms/spring.xml");
+ }
+
+}
Added: incubator/servicemix/trunk/servicemix-jms/src/test/resources/org/apache/servicemix/jms/spring.xml
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-jms/src/test/resources/org/apache/servicemix/jms/spring.xml?rev=390987&view=auto
==============================================================================
--- incubator/servicemix/trunk/servicemix-jms/src/test/resources/org/apache/servicemix/jms/spring.xml (added)
+++ incubator/servicemix/trunk/servicemix-jms/src/test/resources/org/apache/servicemix/jms/spring.xml Mon Apr 3 02:22:21 2006
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns:sm="http://servicemix.apache.org/config/1.0"
+ xmlns:jms="http://servicemix.apache.org/jms/1.0"
+ xmlns:amq="http://activemq.org/config/1.0"
+ xmlns:test="http://test">
+
+ <!-- the JBI container -->
+ <sm:container id="jbi" embedded="true" depends-on="jndi,broker">
+ <sm:activationSpecs>
+
+ <!-- START SNIPPET: lightweight -->
+ <sm:activationSpec>
+ <sm:component>
+ <jms:component>
+ <jms:endpoints>
+ <jms:endpoint service="test:MyConsumerService"
+ endpoint="myConsumer"
+ role="consumer"
+ defaultMep="http://www.w3.org/2004/08/wsdl/in-out"
+ destinationStyle="queue"
+ jmsProviderDestinationName="queue/A"
+ jndiConnectionFactoryName="jms/ConnectionFactory" />
+
+ <jms:endpoint service="test:MyProviderService"
+ endpoint="myProvider"
+ role="provider"
+ destinationStyle="queue"
+ jmsProviderDestinationName="queue/A"
+ connectionFactory="#connectionFactory" />
+ </jms:endpoints>
+ </jms:component>
+ </sm:component>
+ </sm:activationSpec>
+ <!-- END SNIPPET: lightweight -->
+
+ <sm:activationSpec service="test:MyConsumerService" endpoint="myConsumer">
+ <sm:component>
+ <bean class="org.apache.servicemix.components.util.EchoComponent" />
+ </sm:component>
+ </sm:activationSpec>
+
+ </sm:activationSpecs>
+ </sm:container>
+
+ <bean id="jndi"
+ class="org.apache.xbean.spring.jndi.SpringInitialContextFactory"
+ factory-method="makeInitialContext"
+ singleton="true">
+ <property name="entries">
+ <map>
+ <entry key="jms/ConnectionFactory" value-ref="connectionFactory" />
+ </map>
+ </property>
+ </bean>
+
+ <bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
+ <property name="brokerURL" value="tcp://localhost:61216" />
+ </bean>
+
+ <amq:broker id="broker" persistent="false" depends-on="jndi">
+
+ <amq:transportConnectors>
+ <amq:transportConnector uri="tcp://localhost:61216" />
+ </amq:transportConnectors>
+
+ </amq:broker>
+
+</beans>