Нам нужно запустить служебный поток в контейнере EJB3.0. В настоящее время у нас есть «TimerService» @Stateless EJB (необходим, потому что в него вставлены другие @EJBs), который создает интервальный EJB Timer при вызове его метода startTimer (). Должен быть только один экземпляр этого потока таймера. Текущее решение включает вызов startTimer () из метода init () одного из наших сервлетов, где сервлет вынужден загружаться при запуске с использованием файла web.xml, но это выглядит как случайное поведение вместо правильного способа выполнения действий , У нас уже была проблема, потому что кто-то еще подклассил этот сервлет, что означало, что init () вызывался дважды, что означало два потока таймера.
Такое ощущение, что это не необычное требование, так каков правильный способ сделать это, если что-нибудь? Мне кажется, что должен быть простой способ попросить контейнер запустить поток при запуске, не привязывая его к другим ресурсам в контейнере.