You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2010/11/20 15:43:30 UTC
svn commit: r1037227 - in
/wicket/trunk/wicket/src/main/java/org/apache/wicket: Application.java
pageStore/memory/HttpSessionDataStore.java
protocol/http/WebApplication.java protocol/http/WicketFilter.java
Author: mgrigorov
Date: Sat Nov 20 14:43:30 2010
New Revision: 1037227
URL: http://svn.apache.org/viewvc?rev=1037227&view=rev
Log:
WICKET-3168 No Application in the thread when the web server destroys WicketFilter
Set the current Application in the ThreadContext local during WicketFilter#destroy() call.
This way all destroyable objects can use the application if they need it.
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/Application.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/pageStore/memory/HttpSessionDataStore.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebApplication.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/Application.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/Application.java?rev=1037227&r1=1037226&r2=1037227&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/Application.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/Application.java Sat Nov 20 14:43:30 2010
@@ -834,10 +834,11 @@ public abstract class Application implem
onDestroy();
callDestroyers();
- applicationKeyToApplication.remove(getApplicationKey());
getPageManager().destroy();
getSessionStore().destroy();
+
+ applicationKeyToApplication.remove(getApplicationKey());
}
/**
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/pageStore/memory/HttpSessionDataStore.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/pageStore/memory/HttpSessionDataStore.java?rev=1037227&r1=1037226&r2=1037227&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/pageStore/memory/HttpSessionDataStore.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/pageStore/memory/HttpSessionDataStore.java Sat Nov 20 14:43:30 2010
@@ -113,11 +113,9 @@ public class HttpSessionDataStore implem
public void destroy()
{
- PageTable pageTable = getPageTable(false);
- if (pageTable != null)
- {
- pageTable.clear();
- }
+ // do nothing
+ // this is application lifecycle thread (WicketFilter#destroy())
+ // so there is no reachable http session
}
public boolean isReplicated()
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebApplication.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebApplication.java?rev=1037227&r1=1037226&r2=1037227&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebApplication.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebApplication.java Sat Nov 20 14:43:30 2010
@@ -437,10 +437,10 @@ public abstract class WebApplication ext
{
resourceWatcher.destroy();
}
- super.internalDestroy();
bufferedResponses.clear();
- getSessionStore().destroy();
FileCleaner.destroy();
+ super.internalDestroy();
+
}
/**
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java?rev=1037227&r1=1037226&r2=1037227&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java Sat Nov 20 14:43:30 2010
@@ -434,8 +434,16 @@ public class WicketFilter implements Fil
{
if (application != null)
{
- application.internalDestroy();
- application = null;
+ try
+ {
+ ThreadContext.setApplication(application);
+ application.internalDestroy();
+ }
+ finally
+ {
+ ThreadContext.detach();
+ application = null;
+ }
}
}