Author: jcompagner
Date: Mon Mar 30 10:29:28 2009
New Revision: 759909
URL: http://svn.apache.org/viewvc?rev=759909&view=rev
Log:
WebApplication is not thread-safe
made the bufferedResponse Concurrent and the Session specific map synchonized
Issue: WICKET-2191
Modified:
wicket/trunk/wicket/ (props changed)
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebApplication.java
Propchange: wicket/trunk/wicket/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Mar 30 10:29:28 2009
@@ -1 +1 @@
-/wicket/branches/wicket-1.3.x/jdk-1.4/wicket:653208,653212,653215,653226,653231,654304,655446,655466,655786,658141,658189,659118,659120,662360,663058,671549,671885,687144-688996,698530-698577,701132-701133,701843,701850-701877,704231,708127,722099-722105,726536,728467-728490,731960,734478,739647,739951,745468-745497,749817,755171-755176
+/wicket/branches/wicket-1.3.x/jdk-1.4/wicket:653208,653212,653215,653226,653231,654304,655446,655466,655786,658141,658189,659118,659120,662360,663058,671549,671885,687144-688996,698530-698577,701132-701133,701843,701850-701877,704231,708127,722099-722105,726536,728467-728490,731960,734478,739647,739951,745468-745497,749817,755171-755176,759905
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=759909&r1=759908&r2=759909&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
Mon Mar 30 10:29:28 2009
@@ -16,6 +16,7 @@
*/
package org.apache.wicket.protocol.http;
+import java.util.Collections;
import java.util.Map;
import javax.servlet.ServletContext;
@@ -129,7 +130,7 @@
* Map of buffered responses that are in progress per session. Buffered
responses are
* temporarily stored
*/
- private final Map<String, Map<String, BufferedHttpServletResponse>>
bufferedResponses = Generics.newHashMap();
+ private final Map<String, Map<String, BufferedHttpServletResponse>>
bufferedResponses = Generics.newConcurrentHashMap();
/** the default request cycle processor implementation. */
private IRequestCycleProcessor requestCycleProcessor;
@@ -509,9 +510,9 @@
* -Dwicket.configuration. If it does not exist check the servlet init
parameter (
*
<code><init-param><param-name>configuration</param-name></code>).
If not
* found check the servlet context init parameter
- *
<code><context-param><param-name6gt;configuration</param-name></code>).
If
- * the parameter is "development" (which is default), settings
appropriate for development are
- * set. If it's "deployment" , deployment settings are used. If
development is specified and a
+ *
<code><context-param><param-name6gt;configuration</param-name></code>).
If the
+ * parameter is "development" (which is default), settings appropriate
for development are set.
+ * If it's "deployment" , deployment settings are used. If development
is specified and a
* "sourceFolder" init parameter is also set, then resources in that
folder will be polled for
* changes.
*/
@@ -689,7 +690,8 @@
Map<String, BufferedHttpServletResponse> responsesPerSession =
bufferedResponses.get(sessionId);
if (responsesPerSession == null)
{
- responsesPerSession = new MostRecentlyUsedMap<String,
BufferedHttpServletResponse>(4);
+ responsesPerSession = Collections.synchronizedMap(new
MostRecentlyUsedMap<String, BufferedHttpServletResponse>(
+ 4));
bufferedResponses.put(sessionId, responsesPerSession);
}
responsesPerSession.put(bufferId, renderedResponse);