EJBTimerService перестать работать
У меня есть вопрос о EJBTimerService.
EJBTimerService является центральным контроллером, который использует java.util.Timer.
java.util.Timer jdkTimer = ejbContainerUtil.getTimer();
jdkTimer.schedule(timerTask, timerExpiration);
Моя проблема в том, что java.util.Timer.mainLoop перестал работать, а новое задание не запланировано.
После анализа исходного кода GlassFish я сделал выводы. Проблема возникает, потому что мы получаем RejectedExecutionException от ejbContainerUtil.addWork(работа), когда EJBTimeout.
EJBTimerTask timerTask = new EJBTimerTask(timerExpiration, timerId, this);
timerService_.taskExpired(timerId_);
Внутри ejbContainerUtil.addWork у нас есть defaultThreadPoolExecutor.submit()
defaultThreadPoolExecutor = EjbThreadPoolExecutor extends ThreadPoolExecutor + AbortPolicy.
TaskExpiredWork work = new TaskExpiredWork(this, timerId);
ejbContainerUtil.addWork(work);
Таким образом, таймер java.util.Timer.mainLoop перестал работать, так как превышен опрос ядра, очередь заполнена, превышено максимальное ядро, а затем мы получили от ThreadPoolExecutor RejectedExecutionException.
Я прав? Или я не прав?