You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by an...@apache.org on 2006/12/21 10:29:18 UTC
svn commit: r489300 - in
/incubator/tuscany/java/sca/services/bindings/binding.jms/src:
main/java/org/apache/tuscany/binding/jms/
test/java/org/apache/tuscany/binding/jms/
Author: antelder
Date: Thu Dec 21 01:29:17 2006
New Revision: 489300
URL: http://svn.apache.org/viewvc?view=rev&rev=489300
Log:
Support non-temporary reply destinations
Modified:
incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSBinding.java
incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSBindingBuilder.java
incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSReference.java
incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSTargetInvoker.java
incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/SimpleJMSResourceFactory.java
incubator/tuscany/java/sca/services/bindings/binding.jms/src/test/java/org/apache/tuscany/binding/jms/JMSBindingTestCaseX.java
Modified: incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSBinding.java?view=diff&rev=489300&r1=489299&r2=489300
==============================================================================
--- incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSBinding.java (original)
+++ incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSBinding.java Thu Dec 21 01:29:17 2006
@@ -60,6 +60,7 @@
private String operationSelectorPropertyName = "OpName";
private String correlationScheme;
+ private String responseDestinationName;
public JMSBinding(int destinationType, String destinationName, String connectionFactoryName, String activationSpecName, String initialContextFactoryName, String providerURL, int deliveryMode, int timeToLive, int priority, String replyTo) {
super();
@@ -196,8 +197,10 @@
}
public void setResponseDestinationName(String name) {
- // TODO Auto-generated method stub
-
+ this.responseDestinationName = name;
+ }
+ public String getResponseDestinationName() {
+ return responseDestinationName;
}
public void setResponseDestinationType(int destination_type_queue2) {
Modified: incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSBindingBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSBindingBuilder.java?view=diff&rev=489300&r1=489299&r2=489300
==============================================================================
--- incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSBindingBuilder.java (original)
+++ incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSBindingBuilder.java Thu Dec 21 01:29:17 2006
@@ -19,6 +19,9 @@
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
+import javax.jms.Destination;
+import javax.naming.NamingException;
+
import org.apache.axiom.om.OMElement;
import org.apache.tuscany.binding.jms.databinding.XMLTextMsgDataBinding;
import org.apache.tuscany.idl.wsdl.WSDLServiceContract;
@@ -101,13 +104,23 @@
} catch (JMSBindingException e) {
throw new JMSBindingRuntimeException("Error building JMS reference",e);
}
+ Destination requestDest;
+ Destination replyDest = null;
+ try {
+ requestDest = jmsResourceFactory.lookupDestination(jmsBinding.getDestinationName());
+ if (jmsBinding.getResponseDestinationName() != null) {
+ replyDest = jmsResourceFactory.lookupDestination(jmsBinding.getResponseDestinationName());
+ }
+ } catch (NamingException e) {
+ throw new JMSBindingRuntimeException(e);
+ }
- Reference reference = new JMSReference(name,parent,wireService, jmsBinding, jmsResourceFactory,opSec,interfaze);
+ Reference reference = new JMSReference(name,parent,wireService, jmsBinding, jmsResourceFactory,opSec,interfaze, requestDest, replyDest);
reference.setBindingServiceContract(serviceContract);
return reference;
}
-
+
private JMSResourceFactory getJMSResourceFactory(JMSBinding jmsBinding) throws JMSBindingException {
String className = jmsBinding.getJmsResourceFactoryName();
if (className != null && !className.equals("")){
Modified: incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSReference.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSReference.java?view=diff&rev=489300&r1=489299&r2=489300
==============================================================================
--- incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSReference.java (original)
+++ incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSReference.java Thu Dec 21 01:29:17 2006
@@ -18,6 +18,8 @@
*/
package org.apache.tuscany.binding.jms;
+import javax.jms.Destination;
+
import org.apache.tuscany.spi.component.CompositeComponent;
import org.apache.tuscany.spi.extension.ReferenceExtension;
import org.apache.tuscany.spi.model.Operation;
@@ -29,27 +31,35 @@
* @version $Rev: 449970 $ $Date: 2006-09-26 06:05:35 -0400 (Tue, 26 Sep 2006) $
*/
public class JMSReference<T> extends ReferenceExtension {
-
- private JMSBinding jmsBinding;
- private JMSResourceFactory jmsResourceFactory;
- private OperationSelector operationSelector;
-
- public JMSReference(String name,
- CompositeComponent parent,
- WireService wireService,
- JMSBinding jmsBinding,
- JMSResourceFactory jmsResourceFactory,
- OperationSelector operationSelector,
- Class<?> service) {
-
- super(name, service, parent, wireService);
-
- this.jmsBinding = jmsBinding;
- this.jmsResourceFactory = jmsResourceFactory;
- this.operationSelector = operationSelector;
- }
+
+ protected JMSBinding jmsBinding;
+ protected JMSResourceFactory jmsResourceFactory;
+ protected OperationSelector operationSelector;
+ protected Destination requestDest;
+ protected Destination replyDest;
+
+ public JMSReference(String name,
+ CompositeComponent parent,
+ WireService wireService,
+ JMSBinding jmsBinding,
+ JMSResourceFactory jmsResourceFactory,
+ OperationSelector operationSelector,
+ Class<?> service,
+ Destination requestDest,
+ Destination replyDest) {
+
+ super(name, service, parent, wireService);
+
+ this.jmsBinding = jmsBinding;
+ this.jmsResourceFactory = jmsResourceFactory;
+ this.operationSelector = operationSelector;
+ this.requestDest = requestDest;
+ this.replyDest = replyDest;
+ }
public TargetInvoker createTargetInvoker(ServiceContract contract, Operation operation) {
- return new JMSTargetInvoker(jmsResourceFactory, jmsBinding, operation.getName(),operationSelector);
+ return new JMSTargetInvoker(jmsResourceFactory, jmsBinding, operation.getName(), operationSelector,
+ requestDest, replyDest);
}
+
}
Modified: incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSTargetInvoker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSTargetInvoker.java?view=diff&rev=489300&r1=489299&r2=489300
==============================================================================
--- incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSTargetInvoker.java (original)
+++ incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSTargetInvoker.java Thu Dec 21 01:29:17 2006
@@ -18,7 +18,6 @@
*/
package org.apache.tuscany.binding.jms;
-
import java.lang.reflect.InvocationTargetException;
import javax.jms.Destination;
@@ -32,61 +31,71 @@
/**
* Invoke a JMS reference.
- *
+ *
* @version $Rev: 449970 $ $Date: 2006-09-26 06:05:35 -0400 (Tue, 26 Sep 2006) $
*/
public class JMSTargetInvoker extends TargetInvokerExtension {
private JMSBinding jmsBinding;
private String operationName;
- private JMSResourceFactory jmsResourceFactory;
+ private JMSResourceFactory jmsResourceFactory;
private OperationSelector operationSelector;
-
- public JMSTargetInvoker(JMSResourceFactory jmsResourceFactory,JMSBinding jmsBinding, String operationName, OperationSelector operationSelector){
+ protected Destination requestDest;
+ protected Destination replyDest;
+
+ public JMSTargetInvoker(JMSResourceFactory jmsResourceFactory,
+ JMSBinding jmsBinding,
+ String operationName,
+ OperationSelector operationSelector,
+ Destination requestDest,
+ Destination replyDest) {
super(null, null, null);
this.jmsBinding = jmsBinding;
this.jmsResourceFactory = jmsResourceFactory;
this.operationName = operationName;
this.operationSelector = operationSelector;
+ this.requestDest = requestDest;
+ this.replyDest = replyDest;
}
- public Object invokeTarget(Object payload,final short sequence)throws InvocationTargetException {
+ public Object invokeTarget(Object payload, final short sequence) throws InvocationTargetException {
try {
-
- return sendReceiveMessage((Object[])payload);
-
+
+ return sendReceiveMessage((Object[])payload);
+
} catch (Exception e) { // catch JMS specific error
- e.printStackTrace();
- throw new AssertionError(e);
+ e.printStackTrace();
+ throw new AssertionError(e);
}
}
- private Object sendReceiveMessage(Object[] payload) throws JMSException, NamingException, JMSBindingException{
-
- Session session = jmsResourceFactory.createSession();
+ private Object sendReceiveMessage(Object[] payload) throws JMSException, NamingException, JMSBindingException {
+
+ Session session = jmsResourceFactory.createSession();
javax.jms.Message message = jmsResourceFactory.createMessage(session, payload);
-
- operationSelector.setOperationName(operationName,message);
-
- Destination destination = jmsResourceFactory.lookupDestination(jmsBinding.getDestinationName());
-
- MessageProducer producer = session.createProducer(destination);
-
- // create a temporary queue and listen to the response
- //Destination replyDest = session.createQueue(jmsBinding.getDestinationName()+ "-reply");
- Destination replyDest = session.createTemporaryQueue();
+ operationSelector.setOperationName(operationName, message);
+
+ if (jmsBinding.getResponseDestinationName() == null) {
+ replyDest = session.createTemporaryQueue();
+ }
+
message.setJMSReplyTo(replyDest);
-
+
+ MessageProducer producer = session.createProducer(requestDest);
+
producer.send(message);
producer.close();
+
+ String msgSelector = "JMSCorrelationID = '" + message.getJMSMessageID() + "'";
- MessageConsumer consumer = session.createConsumer(replyDest);
+ MessageConsumer consumer = session.createConsumer(replyDest, msgSelector);
jmsResourceFactory.startConnection();
- javax.jms.Message reply = consumer.receive(jmsBinding.getTimeToLive());
- consumer.close();
+ javax.jms.Message reply = consumer.receive(jmsBinding.getTimeToLive());
+ consumer.close();
session.close();
-
+
return jmsResourceFactory.getMessagePayload(reply);
}
+
}
Modified: incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/SimpleJMSResourceFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/SimpleJMSResourceFactory.java?view=diff&rev=489300&r1=489299&r2=489300
==============================================================================
--- incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/SimpleJMSResourceFactory.java (original)
+++ incubator/tuscany/java/sca/services/bindings/binding.jms/src/main/java/org/apache/tuscany/binding/jms/SimpleJMSResourceFactory.java Thu Dec 21 01:29:17 2006
@@ -115,6 +115,9 @@
}
public Destination lookupDestination(String jndiName) throws NamingException {
+ if(context == null){
+ createInitialContext();
+ }
return (Destination)context.lookup(jndiName);
}
Modified: incubator/tuscany/java/sca/services/bindings/binding.jms/src/test/java/org/apache/tuscany/binding/jms/JMSBindingTestCaseX.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/bindings/binding.jms/src/test/java/org/apache/tuscany/binding/jms/JMSBindingTestCaseX.java?view=diff&rev=489300&r1=489299&r2=489300
==============================================================================
--- incubator/tuscany/java/sca/services/bindings/binding.jms/src/test/java/org/apache/tuscany/binding/jms/JMSBindingTestCaseX.java (original)
+++ incubator/tuscany/java/sca/services/bindings/binding.jms/src/test/java/org/apache/tuscany/binding/jms/JMSBindingTestCaseX.java Thu Dec 21 01:29:17 2006
@@ -21,6 +21,9 @@
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
+import javax.jms.Destination;
+import javax.jms.JMSException;
+import javax.naming.NamingException;
import javax.xml.parsers.ParserConfigurationException;
import org.activemq.broker.BrokerContainer;
@@ -42,7 +45,7 @@
protected static final String REQUEST_XML = "<ns:getGreetings xmlns:ns=\"http://helloworld\"><ns:name>petra</ns:name></ns:getGreetings>";
protected static final String REPLY_XML = "<ns1:getGreetingsResponse xmlns:ns1=\"http://helloworld\"><ns1:getGreetingsReturn>Hello petra</ns1:getGreetingsReturn></ns1:getGreetingsResponse>";
- public void testJMSBinding() throws InvocationTargetException, SAXException, IOException, ParserConfigurationException {
+ public void testJMSBinding() throws InvocationTargetException, SAXException, IOException, ParserConfigurationException, NamingException, JMSException {
String reply = introService.greet("Rajith");
assertEquals("Hello Rajith", reply);
@@ -55,7 +58,7 @@
}
- private JMSTargetInvoker createJMSInvoker() {
+ private JMSTargetInvoker createJMSInvoker() throws NamingException, JMSException {
JMSBinding binding = new JMSBinding();
binding.setInitialContextFactoryName("org.activemq.jndi.ActiveMQInitialContextFactory");
binding.setConnectionFactoryName("ConnectionFactory");
@@ -65,7 +68,8 @@
binding.setOperationSelectorPropertyName("scaOperationName");
JMSResourceFactory rf = new SimpleJMSResourceFactory(binding);
rf.setDataBinding(new XMLTextMsgDataBinding());
- JMSTargetInvoker invoker = new JMSTargetInvoker(rf, binding, "getGreetings", new DefaultOperationSelector(binding));
+ Destination requestDest = rf.lookupDestination(binding.getDestinationName());
+ JMSTargetInvoker invoker = new JMSTargetInvoker(rf, binding, "getGreetings", new DefaultOperationSelector(binding), requestDest, null);
return invoker;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org