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);