Author: jeromy
Date: Sun Apr 27 02:26:01 2008
New Revision: 651901

URL: http://svn.apache.org/viewvc?rev=651901&view=rev
Log:
Work-around to release threadlocal ActionContext in init and destroy

WW-2167

Modified:
    
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcher.java

Modified: 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcher.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcher.java?rev=651901&r1=651900&r2=651901&view=diff
==============================================================================
--- 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcher.java
 (original)
+++ 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcher.java
 Sun Apr 27 02:26:01 2008
@@ -203,20 +203,24 @@
      * @param filterConfig The filter configuration
      */
     public void init(FilterConfig filterConfig) throws ServletException {
-        this.filterConfig = filterConfig;
-       
-        initLogging();
-        
-        dispatcher = createDispatcher(filterConfig);
-        dispatcher.init();
-        dispatcher.getContainer().inject(this);
+        try {
+            this.filterConfig = filterConfig;
+
+            initLogging();
+
+            dispatcher = createDispatcher(filterConfig);
+            dispatcher.init();
+            dispatcher.getContainer().inject(this);
 
-        String param = filterConfig.getInitParameter("packages");
-        String packages = "org.apache.struts2.static template 
org.apache.struts2.interceptor.debugging";
-        if (param != null) {
-            packages = param + " " + packages;
+            String param = filterConfig.getInitParameter("packages");
+            String packages = "org.apache.struts2.static template 
org.apache.struts2.interceptor.debugging";
+            if (param != null) {
+                packages = param + " " + packages;
+            }
+            this.pathPrefixes = parse(packages);
+        } finally {
+            ActionContext.setContext(null);
         }
-        this.pathPrefixes = parse(packages);
     }
 
     private void initLogging() {
@@ -252,7 +256,11 @@
         if (dispatcher == null) {
             log.warn("something is seriously wrong, Dispatcher is not 
initialized (null) ");
         } else {
-            dispatcher.cleanup();
+            try {
+                dispatcher.cleanup();
+            } finally {
+                ActionContext.setContext(null);
+            }
         }
     }
 


Reply via email to