Планировщик запуска после завершения развертывания - PullRequest
0 голосов
/ 17 января 2012

У меня есть веб-проект на Java EE 5 и Websphere 7.0 Мне нужно создать планировщик и запустить его после развертывания приложения. Что я пробовал: Я создаю EJB с интерфейсом:

@Local
public interface ISchedulerBean {

    public void executeTimer(Timer timer);
    public void createTimer();
}

Сессионный компонент без сохранения состояния реализует этот интерфейс. Метод createTimer создает экземпляр таймера из TimerService. Эта часть кода работает нормально. Также мне нужно вызвать метод createTimer () после развертывания приложения. Я попробовал:

  1. Добавить слушатель servletContext:

    открытый класс SchedulerInitialiserContextListener реализует ServletContextListener { // сервис для поиска ejb частный WebServiceLocator webServiceLocator; частный SchedulerService schedulerService;

    public SchedulerInitialiserContextListener () { webServiceLocator = new WebServiceLocator (); schedulerService = webServiceLocator.getSchedulerService (); }

    public void contextDestroyed(ServletContextEvent ctx) {
    }
    
    public void contextInitialized(ServletContextEvent ctx) {
        schedulerService.createTimer();
    }
    

    }

  2. создать сервлет с 1, где внедрить SchedulerBean в метод init () и вызвать createTimer.

Но это не работает, потому что сначала веб-приложение развертывает веб-приложение, прослушивает вызовы, инициализирует сервлеты и только затем развертывает ejb.jar, в котором находятся все ejb. Я вижу это в лог-файле вебшпере. Поэтому, когда я пытаюсь получить аннотацию или просмотр eJb throw @EJB, я получаю исключение, потому что ejb не найден. Может быть, есть другой подход для запуска таймера после развертывания модуля ejb или изменения порядка развертывания?

1 Ответ

1 голос
/ 17 января 2012

Вы можете установить порядок запуска ваших модулей.

Предполагая, что вы разрабатываете с Rational Application Developer, сделайте следующее:

Щелкните правой кнопкой мыши ваш проект уха и выберите Java EE -> Открыть WebSphere Application.Развертывание сервера.

Найдите раздел «Приложение», вы увидите все модули и можете установить Start weight для каждого.

Убедитесь, что ваш веб-проект, содержащий прослушиватель контекста, имеетнаибольшее значение, с которым у вас все должно быть в порядке.

  • Эта операция создает каталог ibmconfig в META-INF вашего проекта ear, убедитесь, что вы упаковали его в процессе сборки
...