Внедрение зависимостей в ServerletContextListener - PullRequest
3 голосов
/ 25 июля 2011

Я работаю с сервером приложений Weblogib BEA 10.0.

Я хочу добавить StatelessSessionBean в ServletContextListener. Все, что должен сделать этот компонент - запустить периодический таймер для задач очистки.

Мой проект разделен на 3 артефакта.

Сначала создается war-файл, содержащий ServletContextListener:

public class ContextListener implements ServletContextListener {

@EJB(mappedName = "ejb/cleanUpTimer")
private CleanUpTimer cleanUpTimer;

public void contextInitialized(ServletContextEvent event) {
    cleanUpTimer.activateCleanUpTimer();
}

}

Второй артефакт - это общая библиотека (jar-файл), содержащая интерфейс EJB:

public interface CleanUpTimer {

  public void activateCleanUpTimer();
}

Третий артефакт - это банка, содержащая StatelessSessionBean:

    @Stateless(mappedName = "ejb/cleanUpTimer")
    public class TimedCleanUpSLSB implements CleanUpTimer {

    @Resource
    private TimerService timerService;

    public void activateCleanUpTimer() {
        this.timerService.createTimer(timeout, timeout, "Clean Up Timer");  }

    @Timeout
    @TransactionAttribute(TransactionAttributeType.NEVER)
    public void timedSessionCleanUp(Timer timer) {
        // do something ...
    }
}

При развертывании приложения Контейнер вводит «ноль» в ServletContextListener.

Может кто-нибудь помочь мне с этим вопросом?

...