Author: veithen
Date: Sun Oct 26 14:14:25 2008
New Revision: 708042
URL: http://svn.apache.org/viewvc?rev=708042&view=rev
Log:
JMS transport: Added support for TransportErrorListeners.
Modified:
webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSConnectionFactory.java
webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSListener.java
webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSMessageReceiver.java
Modified:
webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSConnectionFactory.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSConnectionFactory.java?rev=708042&r1=708041&r2=708042&view=diff
==============================================================================
---
webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSConnectionFactory.java
(original)
+++
webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSConnectionFactory.java
Sun Oct 26 14:14:25 2008
@@ -524,6 +524,10 @@
log.error("JMS connection factory " + name + " encountered an error",
e);
boolean wasError = true;
+ if (jmsListener != null) {
+ jmsListener.error(null, e);
+ }
+
// try to connect
// if error occurs wait and try again
while (wasError == true) {
Modified:
webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSListener.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSListener.java?rev=708042&r1=708041&r2=708042&view=diff
==============================================================================
---
webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSListener.java
(original)
+++
webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSListener.java
Sun Oct 26 14:14:25 2008
@@ -26,6 +26,9 @@
import org.apache.axis2.transport.base.BaseConstants;
import org.apache.axis2.transport.base.BaseUtils;
import org.apache.axis2.transport.base.ManagementSupport;
+import org.apache.axis2.transport.base.event.TransportErrorListener;
+import org.apache.axis2.transport.base.event.TransportErrorSource;
+import org.apache.axis2.transport.base.event.TransportErrorSourceSupport;
import java.util.HashMap;
import java.util.Map;
@@ -52,7 +55,8 @@
* <parameter name="transport.jms.Destination" locked="true">
* dynamicTopics/something.TestTopic</parameter>
*/
-public class JMSListener extends AbstractTransportListener implements
ManagementSupport {
+public class JMSListener extends AbstractTransportListener implements
ManagementSupport,
+ TransportErrorSource {
public static final String TRANSPORT_NAME = Constants.TRANSPORT_JMS;
@@ -60,6 +64,8 @@
/** A Map of service name to the JMS EPR addresses */
private Map<String,String> serviceNameToEPRMap = new
HashMap<String,String>();
+ private final TransportErrorSourceSupport tess = new
TransportErrorSourceSupport(this);
+
/**
* This is the TransportListener initialization method invoked by Axis2
*
@@ -237,4 +243,16 @@
handleException("Error shutting down the listener for
maintenence", e);
}
}
+
+ public void addErrorListener(TransportErrorListener listener) {
+ tess.addErrorListener(listener);
+ }
+
+ public void removeErrorListener(TransportErrorListener listener) {
+ tess.removeErrorListener(listener);
+ }
+
+ void error(AxisService service, Throwable ex) {
+ tess.error(service, ex);
+ }
}
Modified:
webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSMessageReceiver.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSMessageReceiver.java?rev=708042&r1=708041&r2=708042&view=diff
==============================================================================
---
webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSMessageReceiver.java
(original)
+++
webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSMessageReceiver.java
Sun Oct 26 14:14:25 2008
@@ -159,10 +159,10 @@
msgContext.setProperty(JMSConstants.JMS_COORELATION_ID,
message.getJMSMessageID());
} catch (JMSException ignore) {}
+ AxisService service = null;
try {
String soapAction = JMSUtils.getInstace().
getProperty(message, BaseConstants.SOAPACTION);
- AxisService service = null;
// set to bypass dispatching if we know the service - we
already should!
if (serviceName != null) {
@@ -219,9 +219,11 @@
} catch (JMSException e) {
metrics.incrementFaultsReceiving();
+ jmsListener.error(service, e);
handleException("JMS Exception reading the message Destination
or JMS ReplyTo", e);
} catch (AxisFault e) {
metrics.incrementFaultsReceiving();
+ jmsListener.error(service, e);
handleException("Axis fault creating a MessageContext", e);
}
}