Author: veithen
Date: Sat Jul 3 11:28:44 2010
New Revision: 960203
URL: http://svn.apache.org/viewvc?rev=960203&view=rev
Log:
AXIS2-4759: Applied patch submitted by Grant Patterson. Fixed
JMSSender/JMSConnectionFactory so that JMS connections are properly closed when
the JMS transport sender is stopped.
Modified:
axis/axis2/java/transports/trunk/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSConnectionFactory.java
axis/axis2/java/transports/trunk/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSConnectionFactoryManager.java
axis/axis2/java/transports/trunk/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSSender.java
Modified:
axis/axis2/java/transports/trunk/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSConnectionFactory.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/transports/trunk/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSConnectionFactory.java?rev=960203&r1=960202&r2=960203&view=diff
==============================================================================
---
axis/axis2/java/transports/trunk/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSConnectionFactory.java
(original)
+++
axis/axis2/java/transports/trunk/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSConnectionFactory.java
Sat Jul 3 11:28:44 2010
@@ -125,6 +125,19 @@ public class JMSConnectionFactory {
throw new AxisJMSException("Invalid cache level : " + val + " for
JMS CF : " + name);
}
}
+
+ /**
+ * Close all connections, sessions etc.. and stop this connection factory
+ */
+ public synchronized void stop() {
+ if (sharedConnection != null) {
+ try {
+ sharedConnection.close();
+ } catch (JMSException e) {
+ log.warn("Error shutting down connection factory : " + name,
e);
+ }
+ }
+ }
/**
* Return the name assigned to this JMS CF definition
@@ -366,7 +379,7 @@ public class JMSConnectionFactory {
* Get a new Connection or shared Connection from this JMS CF
* @return new or shared Connection from this JMS CF
*/
- private Connection getSharedConnection() {
+ private synchronized Connection getSharedConnection() {
if (sharedConnection == null) {
sharedConnection = createConnection();
if (log.isDebugEnabled()) {
@@ -380,7 +393,7 @@ public class JMSConnectionFactory {
* Get a shared Session from this JMS CF
* @return shared Session from this JMS CF
*/
- private Session getSharedSession() {
+ private synchronized Session getSharedSession() {
if (sharedSession == null) {
sharedSession = createSession(getSharedConnection());
if (log.isDebugEnabled()) {
@@ -394,7 +407,7 @@ public class JMSConnectionFactory {
* Get a shared MessageProducer from this JMS CF
* @return shared MessageProducer from this JMS CF
*/
- private MessageProducer getSharedProducer() {
+ private synchronized MessageProducer getSharedProducer() {
if (sharedProducer == null) {
sharedProducer = createProducer(getSharedSession(),
sharedDestination);
if (log.isDebugEnabled()) {
Modified:
axis/axis2/java/transports/trunk/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSConnectionFactoryManager.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/transports/trunk/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSConnectionFactoryManager.java?rev=960203&r1=960202&r2=960203&view=diff
==============================================================================
---
axis/axis2/java/transports/trunk/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSConnectionFactoryManager.java
(original)
+++
axis/axis2/java/transports/trunk/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSConnectionFactoryManager.java
Sat Jul 3 11:28:44 2010
@@ -113,6 +113,15 @@ public class JMSConnectionFactoryManager
private static boolean equals(Object s1, Object s2) {
return s1 == s2 || s1 != null && s1.equals(s2);
}
+
+ /**
+ * Stop all connection factories.
+ */
+ public void stop() {
+ for (JMSConnectionFactory conFac : connectionFactories.values()) {
+ conFac.stop();
+ }
+ }
protected void handleException(String msg, Exception e) throws AxisFault {
log.error(msg, e);
Modified:
axis/axis2/java/transports/trunk/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSSender.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/transports/trunk/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSSender.java?rev=960203&r1=960202&r2=960203&view=diff
==============================================================================
---
axis/axis2/java/transports/trunk/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSSender.java
(original)
+++
axis/axis2/java/transports/trunk/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSSender.java
Sat Jul 3 11:28:44 2010
@@ -64,6 +64,15 @@ public class JMSSender extends AbstractT
connFacManager = new JMSConnectionFactoryManager(transportOut);
log.info("JMS Transport Sender initialized...");
}
+
+ @Override
+ public void stop() {
+
+ // clean up any shared JMS resources in this sender's connection
factories
+ connFacManager.stop();
+
+ super.stop();
+ }
/**
* Get corresponding JMS connection factory defined within the transport
sender for the