Details
-
Bug
-
Resolution: Cannot Reproduce
-
Major
-
None
-
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