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