You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by cw...@apache.org on 2017/07/05 20:18:03 UTC

svn commit: r1800945 - /uima/uima-as/trunk/uimaj-as-activemq/src/main/java/org/apache/uima/adapter/jms/client/ActiveMQMessageSender.java

Author: cwiklik
Date: Wed Jul  5 20:18:02 2017
New Revision: 1800945

URL: http://svn.apache.org/viewvc?rev=1800945&view=rev
Log:
UIMA-5477 Modified to catch a stale session and create a new one along with a new JMS producer

Modified:
    uima/uima-as/trunk/uimaj-as-activemq/src/main/java/org/apache/uima/adapter/jms/client/ActiveMQMessageSender.java

Modified: uima/uima-as/trunk/uimaj-as-activemq/src/main/java/org/apache/uima/adapter/jms/client/ActiveMQMessageSender.java
URL: http://svn.apache.org/viewvc/uima/uima-as/trunk/uimaj-as-activemq/src/main/java/org/apache/uima/adapter/jms/client/ActiveMQMessageSender.java?rev=1800945&r1=1800944&r2=1800945&view=diff
==============================================================================
--- uima/uima-as/trunk/uimaj-as-activemq/src/main/java/org/apache/uima/adapter/jms/client/ActiveMQMessageSender.java (original)
+++ uima/uima-as/trunk/uimaj-as-activemq/src/main/java/org/apache/uima/adapter/jms/client/ActiveMQMessageSender.java Wed Jul  5 20:18:02 2017
@@ -24,14 +24,13 @@ import javax.jms.BytesMessage;
 import javax.jms.Connection;
 import javax.jms.DeliveryMode;
 import javax.jms.Destination;
+import javax.jms.IllegalStateException;
 import javax.jms.JMSException;
 import javax.jms.MessageProducer;
 import javax.jms.Session;
 import javax.jms.TextMessage;
 
 import org.apache.activemq.ActiveMQConnection;
-import org.apache.activemq.ActiveMQMessageProducer;
-import org.apache.activemq.ActiveMQSession;
 import org.apache.activemq.command.ActiveMQDestination;
 import org.apache.uima.UIMAFramework;
 import org.apache.uima.aae.UIMAEE_Constants;
@@ -48,7 +47,7 @@ import org.apache.uima.util.Level;
  * 
  */
 public class ActiveMQMessageSender extends BaseMessageSender {
-  private static final Class CLASS_NAME = ActiveMQMessageSender.class;
+  private static final Class<?> CLASS_NAME = ActiveMQMessageSender.class;
 
   private volatile Connection connection = null;
 
@@ -176,20 +175,46 @@ public class ActiveMQMessageSender exten
     return producer;
   }
 
-  public TextMessage createTextMessage() throws Exception {
-    if (session == null) {
-    //	Force initialization of Producer
-      initializeProducer();
-    }
-    return session.createTextMessage("");
-  }
+	public TextMessage createTextMessage() throws Exception {
+		synchronized (ActiveMQMessageSender.class) {
+			if (session == null) {
+				// Force initialization of Producer
+				initializeProducer();
+			}
+			// return session.createTextMessage("");
+			TextMessage msg = null;
+			try {
+				msg = session.createTextMessage("");
+			} catch (IllegalStateException e) {
+				// stale Session
+				session = null;
+				initializeProducer();
+				msg = session.createTextMessage("");
+			}
+			return msg;
+		}
+
+	}
 
   public BytesMessage createBytesMessage() throws Exception {
-    if (session == null) {
-    //	Force initialization of Producer
-      initializeProducer();
-    }
-    return session.createBytesMessage();
+		synchronized (ActiveMQMessageSender.class) {
+		    if (session == null) {
+		        //	Force initialization of Producer
+		          initializeProducer();
+		    }
+		    BytesMessage msg = null;
+		    try {
+				msg = session.createBytesMessage();
+			} catch (IllegalStateException e) {
+				// stale Session
+				session = null;
+				initializeProducer();
+				msg = session.createBytesMessage();
+			}
+			return msg;
+		}
+
+ //   return session.createBytesMessage();
   }
 
   /**