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