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);
             }
         }


Reply via email to