Планировщик запуска после завершения развертывания
-
29-10-2019 - |
Вопрос
У меня есть веб-проект на Java EE 5 и Websphere 7.0 Мне нужно создать планировщик и запустить его после развертывания приложения. Что я пробовал: Я создаю EJB с интерфейсом:
общийСессионный компонент без сохранения состояния реализует этот интерфейс. Метод createTimer создает экземпляр таймера из TimerService. Эта часть кода работает нормально. Также мне нужно вызвать метод createTimer () после развертывания приложения. Я пробовал:
-
Добавить слушатель servletContext:
открытый класс SchedulerInitialiserContextListener реализует ServletContextListener { // сервис для поиска ejb частный WebServiceLocator webServiceLocator; private SchedulerService schedulerService;
public SchedulerInitialiserContextListener () { webServiceLocator= новый WebServiceLocator (); schedulerService= webServiceLocator.getSchedulerService (); }
общий}
-
создать сервлет с 1, где вставить SchedulerBean в метод init () и вызвать createTimer.
Но это не работает, потому что сначала мы развертываем веб-приложение, вызываем слушателей, инициализируем сервлеты и только потом развертываем ejb.jar, в котором находятся все ejb. Я вижу это в лог-файле webshpere. Поэтому, когда я пытаюсь получить аннотацию или поиск ejb throw @EJB, я получаю исключение, потому что ejb не найден. Может быть, есть другой подход к запуску таймера после развертывания модуля ejb или изменения порядка развертывания?
Решение
Вы можете установить порядок запуска ваших модулей.
Предполагая, что вы разрабатываете с помощью Rational Application Developer, сделайте следующее:
Щелкните правой кнопкой мыши свой ушной проект и выберите Java EE -> Open WebSphere Application Server Deployment.
Найдите раздел "Приложение", вы увидите все модули, и вы можете установить для каждого из них общий кодовый код.
Убедитесь, что ваш веб-проект, содержащий прослушиватель контекста, имеет наибольшее значение, и все должно быть в порядке.
- Эта операция создает каталог ibmconfig под META-INF вашего ушного проекта, убедитесь, что вы упаковали его в процесс сборки.