Uploaded image for project: 'WildFly'
  1. WildFly
  2. WFLY-972

EJB calendar timer Sunday calculation problem in certain locales

    XMLWordPrintable

Details

    • Bug
    • Status: Closed (View Workflow)
    • Major
    • Resolution: Cannot Reproduce
    • None
    • No Release
    • EJB
    • None

    Description

      My ejb class contains this timeout method:

          @Schedule(dayOfWeek="Sun", persistent=false)
          private void sunday(Timer t) {
          }
      

      When calling this timer.getNextTimeout(), it returned the Sunday after next Sunday (expecting next Sunday) when running on certain locales (it_IT, es_PE, etc). It works as expected on other locales like en_US.

      I added -Duser.language=it -Duser.country=IT to JAVA_OPTS when starting standalone server to use that locale.

      Seems to be a JDK bug. There could be some differences how dates are calculated in different locales, but shouldn't be that big like skip one Sunday. Today is Wed.

      One workaround is "to use locale.English when instantiating GregorianCalendar in the following classes." I tried it on 7.2 with it_IT, and got the expected Sunday.

      ejb3/src/main/java/org/jboss/as/ejb3/timerservice/schedule/CalendarBasedTimeout.java
      ejb3/src/main/java/org/jboss/as/ejb3/timerservice/schedule/util/CalendarUtil.java
      ejb3/src/main/java/org/jboss/as/ejb3/timerservice/task/CalendarTimerTask.java
      

      Attachments

        Activity

          People

            emartins@redhat.com Eduardo Martins
            cfang@redhat.com Cheng Fang
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: