[ 
https://issues.apache.org/jira/browse/WW-4263?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13857462#comment-13857462
 ] 

Johno Crawford commented on WW-4263:
------------------------------------

private static final SimpleDateFormat IF_MODIFIED_SINCE_FORMAT = new 
SimpleDateFormat(IF_MODIFIED_SINCE_DATE_FORMAT);

Since it is static, it will be shared between all threads in the JVM, 
SimpleDateFormat stores intermediate results in instance fields. If one 
instance is used by two threads they can mess the results.

> DefaultHttpHeaders.compareIfModifiedSince() throws ParseException when the 
> locale of the web browser is different to the server
> -------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: WW-4263
>                 URL: https://issues.apache.org/jira/browse/WW-4263
>             Project: Struts 2
>          Issue Type: Bug
>          Components: Plugin - REST
>    Affects Versions: 2.3.15.3
>            Reporter: Harry Chan
>              Labels: restful
>             Fix For: 2.3.17
>
>         Attachments: WW-4263.patch
>
>
> I am using the RESTFul  plugin and this exception is thrown when I visit the 
> page enabled *Caching*.
> When I trigger an action from my web browser, it pass the *If-Modified-Since* 
> attribute to server side and the locale of it date format is in *en* - *Wed, 
> 18 Dec 2013 16:00:00 GMT*. 
> Then, in the server side, the *DefaultHttpHeaders* uses the method 
> *compareIfModifiedSince()* to check if it should return the cached data. 
> However, I found that the *DefaultHttpHeaders.compareIfModifiedSince()* would 
> use the *default locale* of the server for parsing the *If-Modified-Since* 
> input which causes ParseException as the locale of the server is NOT same as 
> the web browser I used.
> {code}
> 17:24:20.915 [qtp5416428-21] DEBUG 
> o.a.struts2.rest.DefaultHttpHeaders.debug() 
> [8139ea3e-f463-42fa-9642-ecc2b44b7a21][] - Got error parsing 
> If-Modified-Since header value [Wed, 18 Dec 2013 16:00:00 GMT] as [EEE, dd 
> MMM yyyy HH:mm:ss zzz]!
> java.text.ParseException: Unparseable date: "Wed, 18 Dec 2013 16:00:00 GMT"
>       at java.text.DateFormat.parse(DateFormat.java:357) ~[na:1.7.0_09]
>       at 
> org.apache.struts2.rest.DefaultHttpHeaders.compareIfModifiedSince(DefaultHttpHeaders.java:165)
>  [struts2-rest-plugin-2.3.15.3.jar:2.3.15.3]
>       at 
> org.apache.struts2.rest.DefaultHttpHeaders.apply(DefaultHttpHeaders.java:149) 
> [struts2-rest-plugin-2.3.15.3.jar:2.3.15.3]
>       at 
> org.apache.struts2.rest.RestActionInvocation.processResult(RestActionInvocation.java:190)
>  [struts2-rest-plugin-2.3.15.3.jar:2.3.15.3]
>       at 
> org.apache.struts2.rest.RestActionInvocation.invoke(RestActionInvocation.java:145)
>  [struts2-rest-plugin-2.3.15.3.jar:2.3.15.3]
>       at 
> com.opensymphony.xwork2.DefaultActionProxy.execute(DefaultActionProxy.java:147)
>  [xwork-core-2.3.15.3.jar:2.3.15.3]
>       at 
> org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:563) 
> [struts2-core-2.3.15.3.jar:2.3.15.3]
> ...
> {code}



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to