ICEfaces
  1. ICEfaces
  2. ICE-7211

Parsing error in resource servlet

    Details

    • Type: Bug Bug
    • Status: Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: 2.0.2
    • Fix Version/s: None
    • Component/s: None
    • Labels:
      None
    • Environment:
      Windows JDK 7.0 64 bit, JBoss AS 7

      Description

      I occasionally get an exception like

      java.lang.ArrayIndexOutOfBoundsException: -1
      at java.text.DigitList.fitsIntoLong(DigitList.java:229)
      at java.text.DecimalFormat.parse(DecimalFormat.java:1314)
      at java.text.SimpleDateFormat.subParse(SimpleDateFormat.java:1794)
      at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1455)
      at java.text.DateFormat.parse(DateFormat.java:355)
      at com.icesoft.faces.webapp.CompatResourceServlet.service(CompatResourceServlet.java:60)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
      at org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:67)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
      at org.jboss.seam.servlet.exception.CatchExceptionFilter.doFilter(CatchExceptionFilter.java:65)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
      at org.jboss.seam.servlet.event.ServletEventBridgeFilter.doFilter(ServletEventBridgeFilter.java:72)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
      at fi.affecto.osti.fwkint.servlet.RollbackFilter.doFilter(RollbackFilter.java:34)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
      at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:139)
      at org.jboss.as.web.NamingValve.invoke(NamingValve.java:57)
      at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:49)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:154)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362)
      at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877)
      at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:667)
      at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:952)
      at java.lang.Thread.run(Thread.java:722)


      possible locale related?

        Activity

        Hide
        Patrick Guerin added a comment - - edited

        This error occurred because then a browser load multiple resources simultaneously, the Util.HTTP_DATE.parse() method is called simultaneously and thown an ArrayIndexOutOfBoundsException;

        According the JavaDoc: ( http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html ):
        Date formats are not synchronized. It is recommended to create separate format instances for each thread. If multiple threads access a format concurrently, it must be synchronized externally.

        To Fix this bug, replace in the CompatResourceServlet:
        Date modifiedSince = Util.HTTP_DATE.parse(modifedHeader);
        By:
        SimpleDateFormat sdf = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.ENGLISH);
        Date modifiedSince = sdf.parse(modifedHeader);

        Show
        Patrick Guerin added a comment - - edited This error occurred because then a browser load multiple resources simultaneously, the Util.HTTP_DATE.parse() method is called simultaneously and thown an ArrayIndexOutOfBoundsException; According the JavaDoc: ( http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html ): Date formats are not synchronized. It is recommended to create separate format instances for each thread. If multiple threads access a format concurrently, it must be synchronized externally. To Fix this bug, replace in the CompatResourceServlet: Date modifiedSince = Util.HTTP_DATE.parse(modifedHeader); By: SimpleDateFormat sdf = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.ENGLISH); Date modifiedSince = sdf.parse(modifedHeader);

          People

          • Assignee:
            Unassigned
            Reporter:
            Nicklas Karlsson
          • Votes:
            2 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated: