You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ga...@apache.org on 2010/02/15 17:37:00 UTC

svn commit: r910254 - /geronimo/server/trunk/plugins/wab/geronimo-web-extender/src/main/java/org/apache/geronimo/osgi/web/extender/WebContainerExtender.java

Author: gawor
Date: Mon Feb 15 16:36:59 2010
New Revision: 910254

URL: http://svn.apache.org/viewvc?rev=910254&view=rev
Log:
GERONIMO-5030: make sure not to redeploy queued web apps on extender shutdown

Modified:
    geronimo/server/trunk/plugins/wab/geronimo-web-extender/src/main/java/org/apache/geronimo/osgi/web/extender/WebContainerExtender.java

Modified: geronimo/server/trunk/plugins/wab/geronimo-web-extender/src/main/java/org/apache/geronimo/osgi/web/extender/WebContainerExtender.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/wab/geronimo-web-extender/src/main/java/org/apache/geronimo/osgi/web/extender/WebContainerExtender.java?rev=910254&r1=910253&r2=910254&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/wab/geronimo-web-extender/src/main/java/org/apache/geronimo/osgi/web/extender/WebContainerExtender.java (original)
+++ geronimo/server/trunk/plugins/wab/geronimo-web-extender/src/main/java/org/apache/geronimo/osgi/web/extender/WebContainerExtender.java Mon Feb 15 16:36:59 2010
@@ -75,6 +75,7 @@
     private final Collection<? extends Repository> repositories;
     private final ConfigurationManager configurationManager;
     
+    private boolean stopped;
     private Map<String, WebApplications> contextPathMap;
     private WebContainerEventDispatcher eventDispatcher;
     private BundleTracker bt;
@@ -147,6 +148,7 @@
     public void start(BundleContext context) {
         LOGGER.debug("Starting web container extender...");
 
+        stopped = false;
         executor = Executors.newFixedThreadPool(3);
         contextPathMap = Collections.synchronizedMap(new HashMap<String, WebApplications>());  
         eventDispatcher = new WebContainerEventDispatcher(context);
@@ -201,6 +203,7 @@
     public void stop(BundleContext context) {
         LOGGER.debug("Stopping web container extender...");
         
+        stopped = true;
         if (bt != null) {
             bt.close();
         }
@@ -262,7 +265,7 @@
  
     protected void unregisterWebApplication(WebApplication wab) {
         WebApplications webApplications = contextPathMap.get(wab.getContextPath());
-        webApplications.unregister(wab);
+        webApplications.unregister(wab, !stopped);
     }
 
     public void doFail() {
@@ -304,20 +307,21 @@
             }
         }
         
-        public synchronized void unregister(WebApplication webApp) {
+        public synchronized void unregister(WebApplication webApp, boolean redeploy) {
             if (deployed == webApp) {
-                WebApplication candidate = null;
-                for (WebApplication app : waiting) {
-                    if (candidate == null || candidate.getBundle().getBundleId() > app.getBundle().getBundleId()) {
-                        candidate = app;
+                deployed = null;
+                if (redeploy) {
+                    WebApplication candidate = null;
+                    for (WebApplication app : waiting) {
+                        if (candidate == null || candidate.getBundle().getBundleId() > app.getBundle().getBundleId()) {
+                            candidate = app;
+                        }
+                    }
+                    if (candidate != null) {
+                        waiting.remove(candidate);
+                        deployed = candidate;
+                        deployed.schedule();
                     }
-                }
-                if (candidate == null) {
-                    deployed = null;
-                } else {
-                    waiting.remove(candidate);
-                    deployed = candidate;
-                    deployed.schedule();
                 }
             } else {
                 waiting.remove(webApp);