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