Author: antelder
Date: Thu Feb 12 10:45:29 2009
New Revision: 743685

URL: http://svn.apache.org/viewvc?rev=743685&view=rev
Log:
TUSCANY-2841: start to add support for using a seperate response connection 
factory

Modified:
    
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/AbstractMessageProcessor.java
    
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/BytesMessageProcessor.java
    
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/DefaultJMSResourceFactoryExtensionPoint.java
    
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSResourceFactory.java
    
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSResourceFactoryImpl.java
    
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/ObjectMessageProcessor.java
    
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/TextMessageProcessor.java
    
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/XMLTextMessageProcessor.java
    
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/transport/TransportServiceInterceptor.java

Modified: 
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/AbstractMessageProcessor.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/AbstractMessageProcessor.java?rev=743685&r1=743684&r2=743685&view=diff
==============================================================================
--- 
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/AbstractMessageProcessor.java
 (original)
+++ 
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/AbstractMessageProcessor.java
 Thu Feb 12 10:45:29 2009
@@ -19,6 +19,7 @@
 package org.apache.tuscany.sca.binding.jms.provider;
 
 import java.lang.reflect.InvocationTargetException;
+import java.util.logging.Logger;
 
 import javax.jms.JMSException;
 import javax.jms.Message;
@@ -36,6 +37,7 @@
  * @version $Rev$ $Date$
  */
 public abstract class AbstractMessageProcessor implements JMSMessageProcessor {
+    private static final Logger logger = 
Logger.getLogger(AbstractMessageProcessor.class.getName());
 
     protected String operationPropertyName;
     protected boolean xmlFormat = true;
@@ -100,6 +102,10 @@
     }
 
     public Message createFaultMessage(Session session, Throwable o) {
+        if (session == null) {
+            logger.fine("no response session to create fault message: " + 
String.valueOf(o));
+            return null;
+        }
         try {
 
             ObjectMessage message = session.createObjectMessage();

Modified: 
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/BytesMessageProcessor.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/BytesMessageProcessor.java?rev=743685&r1=743684&r2=743685&view=diff
==============================================================================
--- 
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/BytesMessageProcessor.java
 (original)
+++ 
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/BytesMessageProcessor.java
 Thu Feb 12 10:45:29 2009
@@ -18,6 +18,8 @@
  */
 package org.apache.tuscany.sca.binding.jms.provider;
 
+import java.util.logging.Logger;
+
 import javax.jms.BytesMessage;
 import javax.jms.JMSException;
 import javax.jms.Message;
@@ -33,6 +35,7 @@
  * @version $Rev$ $Date$
  */
 public class BytesMessageProcessor extends AbstractMessageProcessor {
+    private static final Logger logger = 
Logger.getLogger(AbstractMessageProcessor.class.getName());
 
     public BytesMessageProcessor(JMSBinding jmsBinding) {
         super(jmsBinding);
@@ -58,6 +61,10 @@
 
     @Override
     protected Message createJMSMessage(Session session, Object o) {
+        if (session == null) {
+            logger.fine("no response session to create message: " + 
String.valueOf(o));
+            return null;
+        }
         try {
 
             // TODO - an experiment. How to enforce a single

Modified: 
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/DefaultJMSResourceFactoryExtensionPoint.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/DefaultJMSResourceFactoryExtensionPoint.java?rev=743685&r1=743684&r2=743685&view=diff
==============================================================================
--- 
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/DefaultJMSResourceFactoryExtensionPoint.java
 (original)
+++ 
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/DefaultJMSResourceFactoryExtensionPoint.java
 Thu Feb 12 10:45:29 2009
@@ -24,7 +24,7 @@
 public class DefaultJMSResourceFactoryExtensionPoint implements 
JMSResourceFactoryExtensionPoint {
 
     public JMSResourceFactory createJMSResourceFactory(JMSBinding binding) {
-        return new JMSResourceFactoryImpl(binding.getConnectionFactoryName(), 
binding.getInitialContextFactoryName(), binding.getJndiURL());
+        return new JMSResourceFactoryImpl(binding.getConnectionFactoryName(), 
binding.getResponseConnectionFactoryName(), 
binding.getInitialContextFactoryName(), binding.getJndiURL());
     }
 
 }

Modified: 
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSResourceFactory.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSResourceFactory.java?rev=743685&r1=743684&r2=743685&view=diff
==============================================================================
--- 
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSResourceFactory.java
 (original)
+++ 
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSResourceFactory.java
 Thu Feb 12 10:45:29 2009
@@ -64,4 +64,20 @@
      */
     public abstract Destination createDestination(String jndiName) throws 
NamingException;
 
+    /*
+     * This is a simple implementation where a connection is created per 
binding Ideally the resource factory should be
+     * able to leverage the host environment to provide connection pooling if 
it can. E.g. if Tuscany is running inside 
+     * an AppServer Then we could leverage the JMS resources it provides
+     * 
+     * @see org.apache.tuscany.binding.jms.JMSResourceFactory#getConnection()
+     */
+    public abstract Connection getResponseConnection() throws NamingException, 
JMSException;
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.apache.tuscany.binding.jms.JMSResourceFactory#createSession()
+     */
+    public abstract Session createResponseSession() throws JMSException, 
NamingException;
+
 }

Modified: 
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSResourceFactoryImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSResourceFactoryImpl.java?rev=743685&r1=743684&r2=743685&view=diff
==============================================================================
--- 
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSResourceFactoryImpl.java
 (original)
+++ 
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSResourceFactoryImpl.java
 Thu Feb 12 10:45:29 2009
@@ -46,11 +46,16 @@
     protected Connection connection;
     protected Context context;
     protected boolean isConnectionStarted;
+    private Connection responseConnection;
+    private String responseConnectionFactoryName;
 
-    public JMSResourceFactoryImpl(String connectionFactoryName, String 
initialContextFactoryName, String jndiURL) {
+    public JMSResourceFactoryImpl(String connectionFactoryName, String 
responseConnectionFactoryName, String initialContextFactoryName, String 
jndiURL) {
         if (connectionFactoryName != null && 
connectionFactoryName.trim().length() > 0) {
             this.connectionFactoryName = connectionFactoryName.trim();
         }
+        if (responseConnectionFactoryName != null && 
responseConnectionFactoryName.trim().length() > 0) {
+            this.responseConnectionFactoryName = 
responseConnectionFactoryName.trim();
+        }
         if (initialContextFactoryName != null && 
initialContextFactoryName.trim().length() > 0) {
             this.initialContextFactoryName = initialContextFactoryName.trim();
         }
@@ -220,4 +225,25 @@
         }
         return o;
     }
+
+    public Session createResponseSession() throws JMSException, 
NamingException {
+        return getResponseConnection().createSession(false, 
Session.AUTO_ACKNOWLEDGE);
+    }
+
+    public Connection getResponseConnection() throws NamingException, 
JMSException {
+        if (responseConnection == null) {
+            if (responseConnectionFactoryName != null) {
+                ConnectionFactory connectionFactory = 
(ConnectionFactory)jndiLookUp(responseConnectionFactoryName);
+                if (connectionFactory == null) {
+                    throw new JMSBindingException("connection factory not 
found: " + responseConnectionFactoryName);
+                }
+                responseConnection = connectionFactory.createConnection();
+            } else {
+                // if no response connection is defined in the SCDL use the 
request connection
+                responseConnection = getConnection();
+            }
+        }
+        return responseConnection;
+    }
+
 }

Modified: 
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/ObjectMessageProcessor.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/ObjectMessageProcessor.java?rev=743685&r1=743684&r2=743685&view=diff
==============================================================================
--- 
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/ObjectMessageProcessor.java
 (original)
+++ 
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/ObjectMessageProcessor.java
 Thu Feb 12 10:45:29 2009
@@ -19,6 +19,7 @@
 package org.apache.tuscany.sca.binding.jms.provider;
 
 import java.io.Serializable;
+import java.util.logging.Logger;
 
 import javax.jms.JMSException;
 import javax.jms.Message;
@@ -34,6 +35,7 @@
  * @version $Rev$ $Date$
  */
 public class ObjectMessageProcessor extends AbstractMessageProcessor {
+    private static final Logger logger = 
Logger.getLogger(ObjectMessageProcessor.class.getName());
 
     public ObjectMessageProcessor(JMSBinding jmsBinding) {
         super(jmsBinding);
@@ -52,6 +54,10 @@
 
     @Override
     protected Message createJMSMessage(Session session, Object o) {
+        if (session == null) {
+            logger.fine("no response session to create message: " + 
String.valueOf(o));
+            return null;
+        }
         try {
 
             ObjectMessage message = session.createObjectMessage();

Modified: 
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/TextMessageProcessor.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/TextMessageProcessor.java?rev=743685&r1=743684&r2=743685&view=diff
==============================================================================
--- 
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/TextMessageProcessor.java
 (original)
+++ 
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/TextMessageProcessor.java
 Thu Feb 12 10:45:29 2009
@@ -18,6 +18,8 @@
  */
 package org.apache.tuscany.sca.binding.jms.provider;
 
+import java.util.logging.Logger;
+
 import javax.jms.JMSException;
 import javax.jms.Message;
 import javax.jms.Session;
@@ -32,6 +34,7 @@
  * @version $Rev$ $Date$
  */
 public class TextMessageProcessor extends AbstractMessageProcessor {
+    private static final Logger logger = 
Logger.getLogger(TextMessageProcessor.class.getName());
 
     public TextMessageProcessor(JMSBinding jmsBinding) {
         super(jmsBinding);
@@ -54,6 +57,10 @@
 
     @Override
     protected Message createJMSMessage(Session session, Object o) {
+        if (session == null) {
+            logger.fine("no response session to create message: " + 
String.valueOf(o));
+            return null;
+        }
         try {
 
             TextMessage message = session.createTextMessage();

Modified: 
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/XMLTextMessageProcessor.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/XMLTextMessageProcessor.java?rev=743685&r1=743684&r2=743685&view=diff
==============================================================================
--- 
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/XMLTextMessageProcessor.java
 (original)
+++ 
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/XMLTextMessageProcessor.java
 Thu Feb 12 10:45:29 2009
@@ -19,6 +19,7 @@
 package org.apache.tuscany.sca.binding.jms.provider;
 
 import java.io.StringReader;
+import java.util.logging.Logger;
 
 import javax.jms.JMSException;
 import javax.jms.Message;
@@ -39,6 +40,7 @@
  * @version $Rev$ $Date$
  */
 public class XMLTextMessageProcessor extends AbstractMessageProcessor {
+    private static final Logger logger = 
Logger.getLogger(XMLTextMessageProcessor.class.getName());
 
     public XMLTextMessageProcessor(JMSBinding jmsBinding) {
         super(jmsBinding);
@@ -68,6 +70,10 @@
 
     @Override
     protected Message createJMSMessage(Session session, Object o) {
+        if (session == null) {
+            logger.fine("no response session to create message: " + 
String.valueOf(o));
+            return null;
+        }
         try {
 
             TextMessage message = session.createTextMessage();

Modified: 
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/transport/TransportServiceInterceptor.java
URL: 
http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/transport/TransportServiceInterceptor.java?rev=743685&r1=743684&r2=743685&view=diff
==============================================================================
--- 
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/transport/TransportServiceInterceptor.java
 (original)
+++ 
tuscany/branches/sca-java-1.x/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/transport/TransportServiceInterceptor.java
 Thu Feb 12 10:45:29 2009
@@ -91,7 +91,7 @@
         try {
             JMSBindingContext context = msg.getBindingContext();
             javax.jms.Message requestJMSMsg = context.getJmsMsg();
-            
context.setJmsSession(context.getJmsResourceFactory().createSession());
+            
context.setJmsSession(context.getJmsResourceFactory().createResponseSession());
             
             EndpointReference from = new EndpointReferenceImpl(null);
             msg.setFrom(from);


Reply via email to