You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@synapse.apache.org by up...@apache.org on 2007/12/13 08:37:25 UTC
svn commit: r603847 - in
/webservices/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/jms:
JMSConnectionFactory.java JMSConstants.java JMSUtils.java
Author: upul
Date: Wed Dec 12 23:37:24 2007
New Revision: 603847
URL: http://svn.apache.org/viewvc?rev=603847&view=rev
Log:
added jms connection reconnect function when error
Modified:
webservices/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/jms/JMSConnectionFactory.java
webservices/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/jms/JMSConstants.java
webservices/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/jms/JMSUtils.java
Modified: webservices/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/jms/JMSConnectionFactory.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/jms/JMSConnectionFactory.java?rev=603847&r1=603846&r2=603847&view=diff
==============================================================================
--- webservices/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/jms/JMSConnectionFactory.java (original)
+++ webservices/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/jms/JMSConnectionFactory.java Wed Dec 12 23:37:24 2007
@@ -72,7 +72,7 @@
* </parameter>
* </transportReceiver>
*/
-public class JMSConnectionFactory {
+public class JMSConnectionFactory implements ExceptionListener {
private static final Log log = LogFactory.getLog(JMSConnectionFactory.class);
@@ -102,6 +102,8 @@
private JMSMessageReceiver jmsMessageReceiver = null;
/** The axis2 configuration context */
private ConfigurationContext cfgCtx = null;
+ /** if connection dropped, reconnect timeout in milliseconds; default 30 seconds */
+ private long reconnectTimeout = 30000;
/**
* Create a JMSConnectionFactory for the given [axis2] name the
@@ -248,6 +250,8 @@
connection = conFac.createConnection();
}
}
+
+ connection.setExceptionListener(this);
} catch (JMSException e) {
handleException("Error connecting to Connection Factory : " + connFactoryJNDIName, e);
@@ -587,5 +591,40 @@
public void setConnectionFactoryType(String connectionFactoryType) {
this.connectionFactoryType = connectionFactoryType;
+ }
+
+ public long getReconnectTimeout() {
+ return reconnectTimeout;
+ }
+
+ public void setReconnectTimeout(long reconnectTimeout) {
+ this.reconnectTimeout = reconnectTimeout;
+ }
+
+ public void onException(JMSException e) {
+ log.error("jms error ", e);
+ boolean wasError = true;
+
+ // try to connect
+ // if error occurs wait and try again
+ while(wasError == true) {
+
+ try {
+ connectAndListen();
+ wasError = false;
+
+ } catch (Exception e1) {
+ log.error("jms reconnect error ", e);
+ }
+
+ if(wasError == true) {
+ try {
+ Thread.sleep(getReconnectTimeout());
+ } catch (InterruptedException e2) {
+ e2.printStackTrace();
+ }
+ }
+ } // wasError
+
}
}
Modified: webservices/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/jms/JMSConstants.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/jms/JMSConstants.java?rev=603847&r1=603846&r2=603847&view=diff
==============================================================================
--- webservices/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/jms/JMSConstants.java (original)
+++ webservices/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/jms/JMSConstants.java Wed Dec 12 23:37:24 2007
@@ -73,6 +73,10 @@
*/
public static final String CONFAC_PARAM = "transport.jms.ConnectionFactory";
/**
+ * If reconnect timeout if connection error occurs in seconds
+ */
+ public static final String RECONNECT_TIMEOUT = "transport.jms.ReconnectTimeout";
+ /**
* Connection factory type if using JMS 1.0, either DESTINATION_TYPE_QUEUE or DESTINATION_TYPE_TOPIC
*/
public static final String CONFAC_TYPE = "transport.jms.ConnectionFactoryType";
Modified: webservices/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/jms/JMSUtils.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/jms/JMSUtils.java?rev=603847&r1=603846&r2=603847&view=diff
==============================================================================
--- webservices/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/jms/JMSUtils.java (original)
+++ webservices/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/jms/JMSUtils.java Wed Dec 12 23:37:24 2007
@@ -273,6 +273,13 @@
if (JMSConstants.CONFAC_TYPE.equals(p.getName())) {
String connectionFactoryType = (String) p.getValue();
jmsConFactory.setConnectionFactoryType(connectionFactoryType);
+
+ } else if (JMSConstants.RECONNECT_TIMEOUT.equals(p.getName())) {
+ String strTimeout = (String) p.getValue();
+ int reconnectTimeoutSeconds = Integer.parseInt(strTimeout);
+ long reconnectTimeoutMillis = reconnectTimeoutSeconds * 1000;
+ jmsConFactory.setReconnectTimeout(reconnectTimeoutMillis);
+
} else if (Context.INITIAL_CONTEXT_FACTORY.equals(p.getName())) {
jmsConFactory.addJNDIContextProperty(
Context.INITIAL_CONTEXT_FACTORY, (String) p.getValue());
---------------------------------------------------------------------
To unsubscribe, e-mail: synapse-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: synapse-dev-help@ws.apache.org