summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRajith Muditha Attapattu <rajith@apache.org>2012-03-08 20:49:09 +0000
committerRajith Muditha Attapattu <rajith@apache.org>2012-03-08 20:49:09 +0000
commit93d17ee8444639886b0922f58721a4a447f67131 (patch)
tree2f14241449b9d5d5bdb06e21e129ed21871890f0
parent2491ee7318a4a4803348e1693739234679decd3b (diff)
downloadqpid-python-93d17ee8444639886b0922f58721a4a447f67131.tar.gz
QPID-3732 Committing a patch by Weston Price.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1298571 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--qpid/java/jca/example/build-geronimo-properties.xml4
-rw-r--r--qpid/java/jca/example/build-jboss-properties.xml2
-rw-r--r--qpid/java/jca/example/build.xml5
-rw-r--r--qpid/java/jca/example/conf/geronimo-ra.xml12
-rw-r--r--qpid/java/jca/example/conf/jboss-web.xml5
-rw-r--r--qpid/java/jca/example/conf/qpid-jca-ds.xml15
-rw-r--r--qpid/java/jca/example/conf/web.xml11
-rw-r--r--qpid/java/jca/example/qpid-jca-example-properties.xml15
-rw-r--r--qpid/java/jca/example/src/main/java/org/apache/qpid/jca/example/ejb/QpidGoodByeSubscriberBean.java1
-rw-r--r--qpid/java/jca/example/src/main/java/org/apache/qpid/jca/example/ejb/QpidHelloListenerBean.java4
-rw-r--r--qpid/java/jca/example/src/main/java/org/apache/qpid/jca/example/ejb/QpidHelloSubscriberBean.java1
-rw-r--r--qpid/java/jca/example/src/main/java/org/apache/qpid/jca/example/ejb/QpidJMSResponderBean.java13
-rw-r--r--qpid/java/jca/example/src/main/java/org/apache/qpid/jca/example/web/QpidTestServlet.java43
-rw-r--r--qpid/java/jca/src/main/java/org/apache/qpid/ra/QpidRAManagedConnection.java109
14 files changed, 138 insertions, 102 deletions
diff --git a/qpid/java/jca/example/build-geronimo-properties.xml b/qpid/java/jca/example/build-geronimo-properties.xml
index 2251b7a2df..7c5bd33cb0 100644
--- a/qpid/java/jca/example/build-geronimo-properties.xml
+++ b/qpid/java/jca/example/build-geronimo-properties.xml
@@ -29,9 +29,11 @@
<property name="qpid.cf.jndi.name" value="jca:/qpid.jca/QpidJCAAdapter/JCAAdminObject/QpidConnectionFactory"/>
<property name="qpid.hello.queue.jndi.name" value="jca:/qpid.jca/QpidJCAAdapter/JCAAdminObject/HelloQueue"/>
<property name="qpid.goodbye.queue.jndi.name" value="jca:/qpid.jca/QpidJCAAdapter/JCAAdminObject/GoodByeQueue"/>
- <property name="qpid.responder.queue.jndi.name" value="jca:/qpid.jca/QpidJCAAdapter/JCAAdminObject/ResponderQueue"/>
<property name="qpid.hello.topic.jndi.name" value="jca:/qpid.jca/QpidJCAAdapter/JCAAdminObject/HelloTopic"/>
<property name="qpid.goodbye.topic.jndi.name" value="jca:/qpid.jca/QpidJCAAdapter/JCAAdminObject/GoodByeTopic"/>
+ <property name="qpid.request.queue.jndi.name" value="jca:/qpid.jca/QpidJCAAdapter/JCAAdminObject/RequestQueue"/>
+ <property name="qpid.response.queue.jndi.name" value="jca:/qpid.jca/QpidJCAAdapter/JCAAdminObject/ResponseQueue"/>
+
<property name="qpid.ejb.jndi.name" value="name=&quot;QpidTestEJB&quot;"/>
<property name="qpid.ejb.name" value="QpidTestBeanRemote"/>
diff --git a/qpid/java/jca/example/build-jboss-properties.xml b/qpid/java/jca/example/build-jboss-properties.xml
index 5fc4053cf8..b7edf3d796 100644
--- a/qpid/java/jca/example/build-jboss-properties.xml
+++ b/qpid/java/jca/example/build-jboss-properties.xml
@@ -27,7 +27,7 @@
<property name="qpid.goodbye.topic.jndi.name" value="GoodByeTopic"/>
<property name="qpid.hello.queue.jndi.name" value="HelloQueue"/>
<property name="qpid.goodbye.queue.jndi.name" value="GoodByeQueue"/>
- <property name="qpid.responder.queue.jndi.name" value="QpidResponderQueue"/>
+ <property name="qpid.request.queue.jndi.name" value="QpidRequestQueue"/>
<property name="qpid.ejb.jndi.name" value="mappedName=&quot;QpidTestEJB&quot;"/>
<property name="qpid.ejb.ref.name" value="QpidTestBean/local"/>
<property name="qpid.ejb.name" value="qpid-jcaex/QpidTestBean/remote"/>
diff --git a/qpid/java/jca/example/build.xml b/qpid/java/jca/example/build.xml
index 2717ce84d7..ab70ee45fc 100644
--- a/qpid/java/jca/example/build.xml
+++ b/qpid/java/jca/example/build.xml
@@ -80,7 +80,8 @@
<filter token="qpid.hellogoodbye.topic.dest.address" value="${qpid.hellogoodbye.topic.dest.address}"/>
<filter token="qpid.hello.queue.dest.address" value="${qpid.hello.queue.dest.address}"/>
<filter token="qpid.goodbye.queue.dest.address" value="${qpid.goodbye.queue.dest.address}"/>
- <filter token="qpid.responder.queue.dest.address" value="${qpid.responder.queue.dest.address}"/>
+ <filter token="qpid.request.queue.dest.address" value="${qpid.request.queue.dest.address}"/>
+ <filter token="qpid.response.queue.dest.address" value="${qpid.response.queue.dest.address}"/>
</filterset>
<filterset refid="extra.filterset"/>
@@ -96,7 +97,7 @@
<filter token="qpid.goodbye.topic.jndi.name" value="${qpid.goodbye.topic.jndi.name}"/>
<filter token="qpid.hello.queue.jndi.name" value="${qpid.hello.queue.jndi.name}"/>
<filter token="qpid.goodbye.queue.jndi.name" value="${qpid.goodbye.queue.jndi.name}"/>
- <filter token="qpid.responder.queue.jndi.name" value="${qpid.responder.queue.jndi.name}"/>
+ <filter token="qpid.request.queue.jndi.name" value="${qpid.request.queue.jndi.name}"/>
<filter token="qpid.ejb.jndi.name" value="${qpid.ejb.jndi.name}"/>
</filterset>
</copy>
diff --git a/qpid/java/jca/example/conf/geronimo-ra.xml b/qpid/java/jca/example/conf/geronimo-ra.xml
index e3e74ebc62..1c7210d2ee 100644
--- a/qpid/java/jca/example/conf/geronimo-ra.xml
+++ b/qpid/java/jca/example/conf/geronimo-ra.xml
@@ -114,8 +114,16 @@
<adminobject-interface>org.apache.qpid.ra.admin.QpidQueue</adminobject-interface>
<adminobject-class>org.apache.qpid.ra.admin.QpidQueueImpl</adminobject-class>
<adminobject-instance>
- <message-destination-name>ResponderQueue</message-destination-name>
- <config-property-setting name="destinationAddress">@qpid.responder.queue.dest.address@</config-property-setting>
+ <message-destination-name>RequestQueue</message-destination-name>
+ <config-property-setting name="destinationAddress">@qpid.request.queue.dest.address@</config-property-setting>
+ </adminobject-instance>
+ </adminobject>
+ <adminobject>
+ <adminobject-interface>org.apache.qpid.ra.admin.QpidQueue</adminobject-interface>
+ <adminobject-class>org.apache.qpid.ra.admin.QpidQueueImpl</adminobject-class>
+ <adminobject-instance>
+ <message-destination-name>ResponseQueue</message-destination-name>
+ <config-property-setting name="destinationAddress">@qpid.response.queue.dest.address@</config-property-setting>
</adminobject-instance>
</adminobject>
<adminobject>
diff --git a/qpid/java/jca/example/conf/jboss-web.xml b/qpid/java/jca/example/conf/jboss-web.xml
index edacf8d418..32a97d1c35 100644
--- a/qpid/java/jca/example/conf/jboss-web.xml
+++ b/qpid/java/jca/example/conf/jboss-web.xml
@@ -25,6 +25,11 @@
<res-type>javax.jms.ConnectionFactory</res-type>
<jndi-name>java:/QpidJMSXA</jndi-name>
</resource-ref>
+ <resource-ref>
+ <res-ref-name>QpidJMS</res-ref-name>
+ <res-type>javax.jms.ConnectionFactory</res-type>
+ <jndi-name>java:/QpidJMS</jndi-name>
+ </resource-ref>
<ejb-local-ref>
<ejb-ref-name>QpidTestBean</ejb-ref-name>
<jndi-name>qpid-jcaex/QpidTestBean/local</jndi-name>
diff --git a/qpid/java/jca/example/conf/qpid-jca-ds.xml b/qpid/java/jca/example/conf/qpid-jca-ds.xml
index 80fb828b55..3c12e25020 100644
--- a/qpid/java/jca/example/conf/qpid-jca-ds.xml
+++ b/qpid/java/jca/example/conf/qpid-jca-ds.xml
@@ -72,16 +72,25 @@
</mbean>
<mbean code="org.jboss.resource.deployment.AdminObject"
- name="qpid.jca:name=QpidResponderQueue">
- <attribute name="JNDIName">QpidResponderQueue</attribute>
+ name="qpid.jca:name=QpidRequestQueue">
+ <attribute name="JNDIName">QpidRequestQueue</attribute>
<depends optional-attribute-name="RARName">jboss.jca:service=RARDeployment,name='@rar.name@'</depends>
<attribute name="Type">org.apache.qpid.ra.admin.QpidQueue</attribute>
<attribute name="Properties">
- destinationAddress=@qpid.responder.queue.dest.address@
+ destinationAddress=@qpid.request.queue.dest.address@
</attribute>
</mbean>
<mbean code="org.jboss.resource.deployment.AdminObject"
+ name="qpid.jca:name=QpidResponseQueue">
+ <attribute name="JNDIName">QpidResponseQueue</attribute>
+ <depends optional-attribute-name="RARName">jboss.jca:service=RARDeployment,name='@rar.name@'</depends>
+ <attribute name="Type">org.apache.qpid.ra.admin.QpidQueue</attribute>
+ <attribute name="Properties">
+ destinationAddress=@qpid.response.queue.dest.address@
+ </attribute>
+ </mbean>
+ <mbean code="org.jboss.resource.deployment.AdminObject"
name="qpid.jca:name=QpidConnectionFactory">
<attribute name="JNDIName">QpidConnectionFactory</attribute>
<depends optional-attribute-name="RARName">jboss.jca:service=RARDeployment,name='@rar.name@'</depends>
diff --git a/qpid/java/jca/example/conf/web.xml b/qpid/java/jca/example/conf/web.xml
index d87c578606..6e53d7beba 100644
--- a/qpid/java/jca/example/conf/web.xml
+++ b/qpid/java/jca/example/conf/web.xml
@@ -29,11 +29,22 @@
<load-on-startup>1</load-on-startup>
</servlet>
+ <servlet>
+ <display-name>QpidRequestResponseServlet</display-name>
+ <servlet-name>QpidRequestResponseServlet</servlet-name>
+ <servlet-class>org.apache.qpid.jca.example.web.QpidRequestResponseServlet</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+
<servlet-mapping>
<servlet-name>QpidTestServlet</servlet-name>
<url-pattern>/qpid</url-pattern>
</servlet-mapping>
+ <servlet-mapping>
+ <servlet-name>QpidRequestResponseServlet</servlet-name>
+ <url-pattern>/qpid-reqresp</url-pattern>
+ </servlet-mapping>
</web-app>
diff --git a/qpid/java/jca/example/qpid-jca-example-properties.xml b/qpid/java/jca/example/qpid-jca-example-properties.xml
index eb219a05e1..ab0f6267ba 100644
--- a/qpid/java/jca/example/qpid-jca-example-properties.xml
+++ b/qpid/java/jca/example/qpid-jca-example-properties.xml
@@ -45,8 +45,10 @@
value="hello.Queue;{create:always, node:{type:queue, x-declare:{auto-delete:true}}}"/>
<property name="qpid.goodbye.queue.dest.address.ADDR"
value="goodbye.Queue;{create:always, node:{type:queue, x-declare:{auto-delete:true}}}"/>
- <property name="qpid.responder.queue.dest.address.ADDR"
- value="responder.Queue;{create:always, node:{type:queue, x-declare:{auto-delete:true}}}"/>
+ <property name="qpid.request.queue.dest.address.ADDR"
+ value="request.Queue;{create:always, node:{type:queue, x-declare:{auto-delete:true}}}"/>
+ <property name="qpid.response.queue.dest.address.ADDR"
+ value="response.Queue;{create:always, node:{type:queue, x-declare:{auto-delete:false}}}"/>
<property name="qpid.hello.topic.dest.address.BURL"
value="BURL:topic://amq.topic//hello.jcaTopic?routingKey='hello.jcaTopic',autodelete='true'"/>
@@ -58,8 +60,10 @@
value="BURL:direct://amq.direct//hello.Queue?routingkey='hello.Queue'"/>
<property name="qpid.goodbye.queue.dest.address.BURL"
value="BURL:direct://amq.direct//goodbye.Queue?routingkey='goodbye.Queue'"/>
- <property name="qpid.responder.queue.dest.address.BURL"
- value="BURL:direct://amq.direct//responder.Queue?routingkey='responder.Queue'"/>
+ <property name="qpid.request.queue.dest.address.BURL"
+ value="BURL:direct://amq.direct//request.Queue?routingkey='request.Queue'"/>
+ <property name="qpid.response.queue.dest.address.BURL"
+ value="BURL:direct://amq.direct//response.Queue?routingkey='response.Queue'"/>
<!-- This macro allows us to construct a property name which contains a property expansion -->
<macrodef name="set-address-property">
@@ -75,5 +79,6 @@
<set-address-property name="qpid.hellogoodbye.topic.dest.address" syntax="${qpid.dest_syntax}"/>
<set-address-property name="qpid.hello.queue.dest.address" syntax="${qpid.dest_syntax}"/>
<set-address-property name="qpid.goodbye.queue.dest.address" syntax="${qpid.dest_syntax}"/>
- <set-address-property name="qpid.responder.queue.dest.address" syntax="${qpid.dest_syntax}"/>
+ <set-address-property name="qpid.request.queue.dest.address" syntax="${qpid.dest_syntax}"/>
+ <set-address-property name="qpid.response.queue.dest.address" syntax="${qpid.dest_syntax}"/>
</project>
diff --git a/qpid/java/jca/example/src/main/java/org/apache/qpid/jca/example/ejb/QpidGoodByeSubscriberBean.java b/qpid/java/jca/example/src/main/java/org/apache/qpid/jca/example/ejb/QpidGoodByeSubscriberBean.java
index 64e0effb1f..2e43898ed7 100644
--- a/qpid/java/jca/example/src/main/java/org/apache/qpid/jca/example/ejb/QpidGoodByeSubscriberBean.java
+++ b/qpid/java/jca/example/src/main/java/org/apache/qpid/jca/example/ejb/QpidGoodByeSubscriberBean.java
@@ -37,7 +37,6 @@ import org.slf4j.LoggerFactory;
@ActivationConfigProperty(propertyName = "destination", propertyValue = "@qpid.goodbye.topic.jndi.name@"),
@ActivationConfigProperty(propertyName = "connectionURL", propertyValue = "@broker.url@"),
@ActivationConfigProperty(propertyName = "subscriptionDurability", propertyValue = "NotDurable"),
- @ActivationConfigProperty(propertyName = "subscriptionName", propertyValue = "hello.Topic"),
@ActivationConfigProperty(propertyName = "maxSession", propertyValue = "10")
})
diff --git a/qpid/java/jca/example/src/main/java/org/apache/qpid/jca/example/ejb/QpidHelloListenerBean.java b/qpid/java/jca/example/src/main/java/org/apache/qpid/jca/example/ejb/QpidHelloListenerBean.java
index 0056e7b0b8..37b5ffbc76 100644
--- a/qpid/java/jca/example/src/main/java/org/apache/qpid/jca/example/ejb/QpidHelloListenerBean.java
+++ b/qpid/java/jca/example/src/main/java/org/apache/qpid/jca/example/ejb/QpidHelloListenerBean.java
@@ -66,6 +66,10 @@ public class QpidHelloListenerBean implements MessageListener
try
{
+ _log.info(message.getJMSDestination().getClass().getName());
+
+ javax.jms.Queue queue = (javax.jms.Queue)message.getJMSDestination();
+ _log.info("QueueName is: " + queue.getQueueName());
if(message instanceof TextMessage)
{
String content = ((TextMessage)message).getText();
diff --git a/qpid/java/jca/example/src/main/java/org/apache/qpid/jca/example/ejb/QpidHelloSubscriberBean.java b/qpid/java/jca/example/src/main/java/org/apache/qpid/jca/example/ejb/QpidHelloSubscriberBean.java
index 560de36e48..0d87cb6955 100644
--- a/qpid/java/jca/example/src/main/java/org/apache/qpid/jca/example/ejb/QpidHelloSubscriberBean.java
+++ b/qpid/java/jca/example/src/main/java/org/apache/qpid/jca/example/ejb/QpidHelloSubscriberBean.java
@@ -45,7 +45,6 @@ import org.slf4j.LoggerFactory;
@ActivationConfigProperty(propertyName = "destination", propertyValue = "@qpid.hello.topic.jndi.name@"),
@ActivationConfigProperty(propertyName = "connectionURL", propertyValue = "@broker.url@"),
@ActivationConfigProperty(propertyName = "subscriptionDurability", propertyValue = "NotDurable"),
- @ActivationConfigProperty(propertyName = "subscriptionName", propertyValue = "hello.Topic"),
@ActivationConfigProperty(propertyName = "maxSession", propertyValue = "10")
})
public class QpidHelloSubscriberBean implements MessageListener
diff --git a/qpid/java/jca/example/src/main/java/org/apache/qpid/jca/example/ejb/QpidJMSResponderBean.java b/qpid/java/jca/example/src/main/java/org/apache/qpid/jca/example/ejb/QpidJMSResponderBean.java
index e7b44e10ca..d4562511d0 100644
--- a/qpid/java/jca/example/src/main/java/org/apache/qpid/jca/example/ejb/QpidJMSResponderBean.java
+++ b/qpid/java/jca/example/src/main/java/org/apache/qpid/jca/example/ejb/QpidJMSResponderBean.java
@@ -27,6 +27,7 @@ import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
+import javax.jms.Destination;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.MessageProducer;
@@ -40,7 +41,7 @@ import org.slf4j.LoggerFactory;
@MessageDriven(activationConfig = {
@ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
- @ActivationConfigProperty(propertyName = "destination", propertyValue = "@qpid.responder.queue.jndi.name@"),
+ @ActivationConfigProperty(propertyName = "destination", propertyValue = "@qpid.request.queue.jndi.name@"),
@ActivationConfigProperty(propertyName = "connectionURL", propertyValue = "@broker.url@"),
@ActivationConfigProperty(propertyName = "maxSession", propertyValue = "10")
})
@@ -72,10 +73,12 @@ public class QpidJMSResponderBean implements MessageListener
temp.append("QpidJMSResponderBean received message with content: [" + content);
temp.append("] at " + new Date());
+ connection = _connectionFactory.createConnection();
+ session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
if(message.getJMSReplyTo() != null)
{
- connection = _connectionFactory.createConnection();
- session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+ _log.info("Sending response via JMSReplyTo");
messageProducer = session.createProducer(message.getJMSReplyTo());
response = session.createTextMessage();
response.setText(temp.toString());
@@ -83,8 +86,10 @@ public class QpidJMSResponderBean implements MessageListener
}
else
{
- _log.warn("Response was requested with no JMSReplyToDestination set. Will not respond to message.");
+ _log.info("JMSReplyTo is null. Will not respond to message.");
}
+
+
}
}
catch(Exception e)
diff --git a/qpid/java/jca/example/src/main/java/org/apache/qpid/jca/example/web/QpidTestServlet.java b/qpid/java/jca/example/src/main/java/org/apache/qpid/jca/example/web/QpidTestServlet.java
index 11a61e762c..07c3e38f60 100644
--- a/qpid/java/jca/example/src/main/java/org/apache/qpid/jca/example/web/QpidTestServlet.java
+++ b/qpid/java/jca/example/src/main/java/org/apache/qpid/jca/example/web/QpidTestServlet.java
@@ -52,6 +52,7 @@ public class QpidTestServlet extends HttpServlet
private static final int DEFAULT_COUNT = 1;
private static final boolean DEFAULT_TOPIC = false;
private static final boolean DEFAULT_XA = false;
+ private static final boolean DEFAULT_TX = false;
private static final boolean DEFAULT_SAY_GOODBYE = true;
@Resource(@jndi.scheme@="@qpid.xacf.jndi.name@")
@@ -82,6 +83,7 @@ public class QpidTestServlet extends HttpServlet
UserTransaction ut = null;
boolean useXA = false;
boolean rollback = false;
+ boolean useTX = false;
try
{
@@ -90,8 +92,10 @@ public class QpidTestServlet extends HttpServlet
int count = (req.getParameter("count") == null) ? DEFAULT_COUNT : Integer.valueOf(req.getParameter("count"));
boolean useTopic = (req.getParameter("useTopic") == null) ? DEFAULT_TOPIC : Boolean.valueOf(req.getParameter("useTopic"));
useXA = (req.getParameter("useXA") == null) ? DEFAULT_XA : Boolean.valueOf(req.getParameter("useXA"));
+ useTX = (req.getParameter("useTX") == null) ? DEFAULT_TX : Boolean.valueOf(req.getParameter("useTX"));
ctx = new InitialContext();
boolean sayGoodBye = (req.getParameter("sayGoodBye") == null) ? DEFAULT_SAY_GOODBYE : Boolean.valueOf(req.getParameter("sayGoodBye"));
+ useTX = (req.getParameter("useTX") == null) ? DEFAULT_TOPIC : Boolean.valueOf(req.getParameter("DEFAULT_TX"));
_log.debug("Environment: ");
_log.debug("Message content: " + content);
@@ -122,7 +126,7 @@ public class QpidTestServlet extends HttpServlet
}
connection = _connectionFactory.createConnection();
- session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+ session = connection.createSession(useTX, Session.AUTO_ACKNOWLEDGE);
messageProducer = (useTopic) ? session.createProducer(_topic) : session.createProducer(_queue);
for(int i = 0; i < count; i++)
@@ -155,6 +159,19 @@ public class QpidTestServlet extends HttpServlet
}
}
+ if(useTX)
+ {
+ try
+ {
+ session.rollback();
+ }
+ catch(Exception ex)
+ {
+ _log.error(ex.getMessage(), ex);
+ throw new ServletException(ex.getMessage(), ex);
+ }
+ }
+
_log.error(e.getMessage(), e);
throw new ServletException(e.getMessage(), e);
}
@@ -181,12 +198,32 @@ public class QpidTestServlet extends HttpServlet
}
}
+ if(useTX && !useXA)
+ {
+ try
+ {
+
+ if(rollback)
+ {
+ session.rollback();
+ }
+ else
+ {
+ session.commit();
+ }
+ }
+ catch(Exception e)
+ {
+
+ _log.error(e.getMessage(), e);
+ throw new ServletException(e.getMessage(), e);
+ }
+ }
+
QpidUtil.closeResources(session, connection, ctx);
}
}
-
-
}
diff --git a/qpid/java/jca/src/main/java/org/apache/qpid/ra/QpidRAManagedConnection.java b/qpid/java/jca/src/main/java/org/apache/qpid/ra/QpidRAManagedConnection.java
index 53896d8872..eccf77aff2 100644
--- a/qpid/java/jca/src/main/java/org/apache/qpid/ra/QpidRAManagedConnection.java
+++ b/qpid/java/jca/src/main/java/org/apache/qpid/ra/QpidRAManagedConnection.java
@@ -34,10 +34,11 @@ import java.util.concurrent.locks.ReentrantLock;
import javax.jms.Connection;
import javax.jms.ExceptionListener;
import javax.jms.JMSException;
+import javax.jms.QueueConnection;
import javax.jms.ResourceAllocationException;
import javax.jms.Session;
-import javax.jms.QueueConnection;
import javax.jms.TopicConnection;
+import javax.jms.XAConnection;
import javax.jms.XAQueueConnection;
import javax.jms.XASession;
import javax.jms.XATopicConnection;
@@ -260,7 +261,20 @@ public class QpidRAManagedConnection implements ManagedConnection, ExceptionList
}
catch (JMSException e)
{
- _log.debug("Error closing session " + this, e);
+ _log.debug("Error closing XASession " + this, e);
+ }
+
+ try
+ {
+ if(_session != null)
+ {
+ _session.close();
+ }
+
+ }
+ catch(JMSException e)
+ {
+ _log.error("Error closing Session " + this, e);
}
if (_connection != null)
@@ -585,7 +599,7 @@ public class QpidRAManagedConnection implements ManagedConnection, ExceptionList
*/
protected Session getSession() throws JMSException
{
- if(_xaSession != null && !_mcf.getUseLocalTx())
+ if(_xaSession != null && !_mcf.getUseLocalTx() && _inManagedTx)
{
if (_log.isTraceEnabled())
{
@@ -761,107 +775,44 @@ public class QpidRAManagedConnection implements ManagedConnection, ExceptionList
{
if (_userName != null && _password != null)
{
- if(!transacted)
- {
- _connection = _mcf.getCleanAMQConnectionFactory().createXATopicConnection(_userName, _password);
- }
- else
- {
- _connection = _mcf.getCleanAMQConnectionFactory().createTopicConnection(_userName, _password);
- }
+ _connection = _mcf.getCleanAMQConnectionFactory().createXATopicConnection(_userName, _password);
}
else
{
- if(!transacted)
- {
- _connection = _mcf.getDefaultAMQConnectionFactory().createXATopicConnection();
- }
- else
- {
- _connection = _mcf.getDefaultAMQConnectionFactory().createTopicConnection();
- }
+ _connection = _mcf.getDefaultAMQConnectionFactory().createXATopicConnection();
}
- if(!transacted)
- {
- _xaSession = ((XATopicConnection)_connection).createXATopicSession();
- }
- else
- {
- _session = ((TopicConnection)_connection).createTopicSession(transacted, acknowledgeMode);
- }
+ _xaSession = ((XATopicConnection)_connection).createXATopicSession();
+ _session = ((TopicConnection)_connection).createTopicSession(transacted, acknowledgeMode);
+
}
else if (_cri.getType() == QpidRAConnectionFactory.QUEUE_CONNECTION)
{
if (_userName != null && _password != null)
{
- if(!transacted)
- {
- _connection = _mcf.getCleanAMQConnectionFactory().createXAQueueConnection(_userName, _password);
- }
- else
- {
- _connection = _mcf.getCleanAMQConnectionFactory().createQueueConnection(_userName, _password);
- }
+ _connection = _mcf.getCleanAMQConnectionFactory().createXAQueueConnection(_userName, _password);
}
else
{
- if(!transacted)
- {
- _connection = _mcf.getDefaultAMQConnectionFactory().createXAQueueConnection();
- }
- else
- {
- _connection = _mcf.getDefaultAMQConnectionFactory().createQueueConnection();
- }
+ _connection = _mcf.getDefaultAMQConnectionFactory().createXAQueueConnection();
}
- if(!transacted)
- {
- _xaSession = ((XAQueueConnection)_connection).createXAQueueSession();
+ _xaSession = ((XAQueueConnection)_connection).createXAQueueSession();
+ _session = ((QueueConnection)_connection).createQueueSession(transacted, acknowledgeMode);
- }
- else
- {
- _session = ((QueueConnection)_connection).createQueueSession(transacted, acknowledgeMode);
-
- }
}
else
{
if (_userName != null && _password != null)
{
- if(!transacted)
- {
- _connection = _mcf.getCleanAMQConnectionFactory().createXAConnection(_userName, _password);
- }
- else
- {
- _connection = _mcf.getCleanAMQConnectionFactory().createConnection(_userName, _password);
- }
- }
- else
- {
- if(!transacted)
- {
- _connection = _mcf.getDefaultAMQConnectionFactory().createXAConnection();
- }
- else
- {
- _connection = _mcf.getDefaultAMQConnectionFactory().createConnection();
- }
- }
-
- if(!transacted)
- {
- _xaSession = ((XAQueueConnection)_connection).createXASession();
-
+ _connection = _mcf.getCleanAMQConnectionFactory().createXAConnection(_userName, _password);
}
else
{
- _session = ((QueueConnection)_connection).createSession(transacted, acknowledgeMode);
-
+ _connection = _mcf.getDefaultAMQConnectionFactory().createXAConnection();
}
+ _xaSession = ((XAConnection)_connection).createXASession();
+ _session = _connection.createSession(transacted, acknowledgeMode);
}
_connection.setExceptionListener(this);