Return-Path: X-Original-To: apmail-axis-java-dev-archive@www.apache.org Delivered-To: apmail-axis-java-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id B51C8D4ED for ; Wed, 17 Oct 2012 09:38:05 +0000 (UTC) Received: (qmail 95232 invoked by uid 500); 17 Oct 2012 09:38:04 -0000 Delivered-To: apmail-axis-java-dev-archive@axis.apache.org Received: (qmail 94828 invoked by uid 500); 17 Oct 2012 09:38:03 -0000 Mailing-List: contact java-dev-help@axis.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: java-dev@axis.apache.org Delivered-To: mailing list java-dev@axis.apache.org Received: (qmail 94803 invoked by uid 99); 17 Oct 2012 09:38:03 -0000 Received: from arcas.apache.org (HELO arcas.apache.org) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 17 Oct 2012 09:38:03 +0000 Date: Wed, 17 Oct 2012 09:38:02 +0000 (UTC) From: "Rene Preissel (JIRA)" To: java-dev@axis.apache.org Message-ID: <1577308577.56864.1350466683013.JavaMail.jiratomcat@arcas> In-Reply-To: <857643070.56833.1350466204653.JavaMail.jiratomcat@arcas> Subject: [jira] [Commented] (TRANSPORTS-53) Shared connection in JMSConnectionFactory doesn't support reconnect MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/TRANSPORTS-53?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13477738#comment-13477738 ] Rene Preissel commented on TRANSPORTS-53: ----------------------------------------- The solution is an exception listener that cleansup the shared resources. @@ -42,7 +44,9 @@ import java.util.Hashtable; * When used for sending messages out, the JMSConnectionFactory'ies are able to cache * a Connection, Session or Producer */ -public class JMSConnectionFactory { +public class JMSConnectionFactory implements ExceptionListener { @@ -369,6 +373,12 @@ public class JMSConnectionFactory { private Connection getSharedConnection() { if (sharedConnection == null) { sharedConnection = createConnection(); + try { + sharedConnection.setExceptionListener(this); + } catch (JMSException e) { + handleException("Error setting exception listener", e); + } @@ -403,4 +413,28 @@ public class JMSConnectionFactory { } return sharedProducer; } + + public void onException(JMSException j) { + sharedConnection=null; + sharedSession=null; + sharedSession=null; + + log.warn("JMS Connection failure : " + j.getMessage()); + } + } > Shared connection in JMSConnectionFactory doesn't support reconnect > ------------------------------------------------------------------- > > Key: TRANSPORTS-53 > URL: https://issues.apache.org/jira/browse/TRANSPORTS-53 > Project: Axis2 Transports > Issue Type: Bug > Components: JMS > Affects Versions: 1.0.0 > Environment: Seen on JBoss 5.1.0_GA and TibcoEMS 5.1.0 > Reporter: Rene Preissel > > JMSSender uses the JMSConnectionFactory to create JMS connections. > This connection is used to send the results back to the client. > JMSConnectionFactory uses a shared connection internally. If the JMS Server fails and restarts this shared connection is not cleaned up. Next time a result should be send to the client an IllegalStateException is thrown: > javax.jms.IllegalStateException: Connection is closed > at com.tibco.tibjms.TibjmsConnection._createSession(TibjmsConnection.java:2621) > at com.tibco.tibjms.TibjmsConnection._createSession(TibjmsConnection.java:2601) > at com.tibco.tibjms.TibjmsTopicConnection.createTopicSession(TibjmsTopicConnection.java:46) > at org.apache.axis2.transport.jms.JMSOutTransportInfo.createJMSSender(JMSOutTransportInfo.java:365) > at org.apache.axis2.transport.jms.JMSSender.sendMessage(JMSSender.java:121) > at org.apache.axis2.transport.base.AbstractTransportSender.invoke(AbstractTransportSender.java:119) > at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:443) > at org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:43) > at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:114) > at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:181) > at org.apache.axis2.transport.base.AbstractTransportListener.handleIncomingMessage(AbstractTransportListener.java:328) > at org.apache.axis2.transport.jms.JMSMessageReceiver.processThoughEngine(JMSMessageReceiver.java:196) > at org.apache.axis2.transport.jms.JMSMessageReceiver.onMessage(JMSMessageReceiver.java:122) > at org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.handleMessage(ServiceTaskManager.java:530) > at org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.run(ServiceTaskManager.java:442) > at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:58) > at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) > at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) > at java.lang.Thread.run(Thread.java:619) -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org For additional commands, e-mail: java-dev-help@axis.apache.org