[
https://issues.apache.org/struts/browse/WW-2507?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Don Brown updated WW-2507:
--------------------------
Assignee: (was: Don Brown)
Would that really be enough though? Just because we synchronized on the object
doesn't mean that any other code calling its methods would also be
synchronized. I'm not sure the best solution here without leaking the session
object specifics through the nice Map abstraction. Any ideas?
> I18nInterceptor's intercept method is not thread safe
> -----------------------------------------------------
>
> Key: WW-2507
> URL: https://issues.apache.org/struts/browse/WW-2507
> Project: Struts 2
> Issue Type: Bug
> Components: Core Interceptors
> Affects Versions: 2.0.11
> Reporter: Bob Tiernay
>
> The following excerpt from I18nInterceptor's intercept method is not thread
> safe:
> //save it in session
> Map session = invocation.getInvocationContext().getSession(); <---
> start of atomic operation
> if (session != null) {
> if (requested_locale != null) {
> Locale locale = (requested_locale instanceof Locale) ?
> (Locale) requested_locale :
> LocalizedTextUtil.localeFromString(requested_locale.toString(), null);
> if (log.isDebugEnabled()) {
> log.debug("store locale=" + locale);
> }
> if (locale != null) {
> session.put(attributeName, locale);
> }
> }
> //set locale for action
> Object locale = session.get(attributeName); <--- session may no
> longer exist due to concurrecy.
> if (locale != null && locale instanceof Locale) {
> if (log.isDebugEnabled()) {
> log.debug("apply locale=" + locale);
> }
> saveLocale(invocation, (Locale)locale);
> }
> }
> Between the calls of:
> 1. Map session = invocation.getInvocationContext().getSession(); , and
> 2. Object locale = session.get(attributeName);
> the session may have been invalidated. In my particular application, this
> was indeed the case. This causes an invalid session exception to be raised.
> The recommended handling would be to synchronize this portion of the method.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.