2015-04-30 2 views

ответ

4

У вас есть несколько вариантов.

Если вы используя CDI, вы можете добавить метод для наблюдателя @Observes @Initialized(ApplicationScoped.class) Object o Если вы используя EJBs, вы можете иметь @javax.ejb.Singleton @javax.ejb.Startup с @PostConstruct метод, который делает инициализацию. Вот два примера реализации.

// using a CDI object 
@ApplicationScoped 
public class SomeStartupBean { 
    public void initOnStartup(@Observes @Initialized(ApplicationScoped.class) Object obj) { 
     // do your start up logic here 
    } 
} 

или

// using an EJB 
@Singleton 
@Startup 
public class SomeStartupSingleton { 
    @PostConstruct 
    public void initOnStartup() { 
     // do your start up logic here 
    } 
} 
+0

В этом случае у меня есть сервлет RESTeasy. Я хотел бы вызвать некоторую логику, чтобы сбрасывать текущую среду в файл журнала, когда сервлет доступен. Я ищу что-то вроде Spring's ApplicationListener для ContextRefreshedEvent. В идеале я мог бы сделать это автономным классом, который может быть включен в любой файл войны. – Patrick

+0

Тогда любое решение будет отлично работать для вас. –

+0

Я не пытаюсь быть тупым, но я точно не знаю, как это сделать. Я бы хотел создать класс EnvironmentLogger, который можно просто включить в файл войны. Где аннотации @Observes @Initialized (ServletName) входят в такой класс? Еще раз спасибо. – Patrick

0

Вы можете использовать @Startup EJB. Это будет выполняться, когда приложение успешно развернуто.

Смежные вопросы