We are running with Struts 2.0.1.1 (which uses xWork 2.0.4) and are noticing
that we are getting hung threads sometimes on a HashMap call from
com.opensymphony.xwork2.util.LocalizedTextUtil.
It looks like the xWork code is question needs to be synchronized and is
causing the threads to lock due to corruption in the HashMap. The problem code
from xWork 2.0.4 is:
private static MessageFormat buildMessageFormat(String pattern, Locale locale) {
MessageFormatKey key = new MessageFormatKey(pattern, locale);
MessageFormat format = (MessageFormat) messageFormats.get(key);
if (format == null) {
format = new MessageFormat(pattern);
format.setLocale(locale);
format.applyPattern(pattern);
messageFormats.put(key, format);
}
return format;
}
I noticed that in later version of xWork this appears to have been fixed by the
following change:
private static MessageFormat buildMessageFormat(String pattern, Locale locale) {
MessageFormatKey key = new MessageFormatKey(pattern, locale);
MessageFormat format = null;
synchronized(messageFormats) {
format = (MessageFormat) messageFormats.get(key);
if (format == null) {
format = new MessageFormat(pattern);
format.setLocale(locale);
format.applyPattern(pattern);
messageFormats.put(key, format);
}
}
return format;
}
So my question is, has anyone attempted to upgrade the xWork library to a later
version in Struts 2.0.1.1? And if so, what version did you use and what was
your experience?
Thank you in advance!
Ken
-----------------------------------------
***Note:The information contained in this message may be privileged
and confidential and protected from disclosure. If the reader of
this message is not the intended recipient, or an employee or agent
responsible for delivering this message to the intended recipient,
you are hereby notified that any dissemination, distribution or
copying of this communication is strictly prohibited. If you have
received this communication in error, please notify the Sender
immediately by replying to the message and deleting it from your
computer. Thank you. Premier Inc.