You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by ve...@apache.org on 2008/06/11 00:15:20 UTC

svn commit: r666346 - in /synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/base: AbstractPollingTransportListener.java AbstractTransportListener.java

Author: veithen
Date: Tue Jun 10 15:15:16 2008
New Revision: 666346

URL: http://svn.apache.org/viewvc?rev=666346&view=rev
Log:
* AbstractTransportListener#destroy now unregisters the MBean.
* AbstractTransportListener#stop now calls stopListeningForService as expected. This provides a proper solution for SYNAPSE-288 and SYNAPSE-331, making the workaround introduced in revision 660475 in AbstractPollingTransportListener unnecessary.

Modified:
    synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/base/AbstractPollingTransportListener.java
    synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/base/AbstractTransportListener.java

Modified: synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/base/AbstractPollingTransportListener.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/base/AbstractPollingTransportListener.java?rev=666346&r1=666345&r2=666346&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/base/AbstractPollingTransportListener.java (original)
+++ synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/base/AbstractPollingTransportListener.java Tue Jun 10 15:15:16 2008
@@ -78,14 +78,6 @@
                     return;
                 }
 
-                if (state == BaseConstants.STOPPED) {
-                    if (log.isDebugEnabled()) {
-                        log.debug("Transport " + transportName +
-                                " onPoll() trigger : Transport is currently stopped..");
-                    }
-                    return;
-                }
-
                 workerPool.execute(new Runnable() {
                     public void run() {
                         synchronized (pollLock) {

Modified: synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/base/AbstractTransportListener.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/base/AbstractTransportListener.java?rev=666346&r1=666345&r2=666346&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/base/AbstractTransportListener.java (original)
+++ synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/base/AbstractTransportListener.java Tue Jun 10 15:15:16 2008
@@ -121,6 +121,7 @@
             }
         } finally {
             state = BaseConstants.STOPPED;
+            unregisterMBean(getMBeanName());
         }
         try {
             workerPool.shutdown(10000);
@@ -135,6 +136,9 @@
             // cancel receipt of service lifecycle events
             cfgCtx.getAxisConfiguration().getObserversList().remove(axisObserver);
             log.info(transportName.toUpperCase() + " Listener Shutdown");
+            for (AxisService service : getListeningServices()) {
+                internalStopListeningForService(service);
+            }
         }
     }
 
@@ -143,20 +147,37 @@
             state = BaseConstants.STARTED;
             // register to receive updates on services for lifetime management
             // cfgCtx.getAxisConfiguration().addObservers(axisObserver);
+            log.info(transportName.toUpperCase() + " Listener started");
+            // iterate through deployed services and start
+            for (AxisService service : getListeningServices()) {
+                internalStartListeningForService(service);
+            }
         }
-        log.info(transportName.toUpperCase() + " Listener started");
-
-        // iterate through deployed services and start
+    }
+    
+    /**
+     * Get the list of services that are listening on this transport, i.e. that are
+     * configured to use this transport.
+     * 
+     * @return the list of listening services
+     */
+    private List<AxisService> getListeningServices() {
+        List<AxisService> result = new LinkedList<AxisService>();
         Iterator services = cfgCtx.getAxisConfiguration().getServices().values().iterator();
-
         while (services.hasNext()) {
             AxisService service = (AxisService) services.next();
-            if (BaseUtils.isUsingTransport(service, transportName)) {
-                internalStartListeningForService(service);
+            if (!ignoreService(service)
+                    && BaseUtils.isUsingTransport(service, transportName)) {
+                result.add(service);
             }
         }
+        return result;
     }
-
+    
+    private boolean ignoreService(AxisService service) {
+        return service.getName().startsWith("__"); // these are "private" services
+    }
+    
     public void disableTransportForService(AxisService service) {
 
         log.warn("Disabling the " + getTransportName() + " transport for the service "
@@ -302,11 +323,8 @@
 
         public void serviceUpdate(AxisEvent event, AxisService service) {
 
-            if (service.getName().startsWith("__")) {
-                return; // these are "private" services
-            }
-
-            if (BaseUtils.isUsingTransport(service, transportName)) {
+            if (!ignoreService(service)
+                    && BaseUtils.isUsingTransport(service, transportName)) {
                 switch (event.getEventType()) {
                     case AxisEvent.SERVICE_DEPLOY :
                         internalStartListeningForService(service);