Programador de inicialização após implantação completa
-
29-10-2019 - |
Pergunta
Eu tenho um projeto da web em Java EE 5 e Websphere 7.0 Eu preciso criar o planejador e iniciá-lo após implantar o aplicativo. O que eu tentei: Eu crio EJB com interface:
@Local
public interface ISchedulerBean {
public void executeTimer(Timer timer);
public void createTimer();
}
O bean de sessão stateless implementa esta interface. O método createTimer cria uma instância de timer de TimerService. Esta parte do código funciona bem. Além disso, preciso chamar o método createTimer () após a implantação do aplicativo. Eu tentei:
-
Adicionar ouvinte servletContext:
public class SchedulerInitialiserContextListener implementa ServletContextListener { // serviço para pesquisar ejb private WebServiceLocator webServiceLocator; private SchedulerService schedulerService;
public SchedulerInitialiserContextListener () { webServiceLocator= novo WebServiceLocator (); schedulerService= webServiceLocator.getSchedulerService (); }
public void contextDestroyed(ServletContextEvent ctx) { } public void contextInitialized(ServletContextEvent ctx) { schedulerService.createTimer(); }
}
-
crie Servlet com 1 onde injete SchedulerBean no método init () e chame createTimer.
Mas isso não funciona, porque primeiro o webspere implanta o aplicativo da web, chama os ouvintes, inicializa os servlets e só então implanta o ejb.jar no qual todos os ejb estão localizados. Posso ver isso no arquivo de log do webshpere. Portanto, quando tento obter o ejb através da anotação ou pesquisa @EJB, recebo a exceção, porque o ejb não foi encontrado. Pode ser outra abordagem para iniciar o cronômetro após a implantação do módulo ejb ou alterar a ordem de implantação?
Solução
Você pode definir a ordem de inicialização dos seus módulos.
Supondo que você desenvolva com o Rational Application Developer, faça o seguinte:
Clique com o botão direito em seu projeto ear e clique em Java EE -> Open WebSphere Application Server Deployment.
Procure a seção Aplicativo, você verá todos os módulos e poderá definir o Start weight
para cada um.
Certifique-se de que seu projeto da web que contém o Listener de contexto tenha o maior valor e você deve ficar bem.
- Esta operação cria um diretório ibmconfig no META-INF do seu projeto ear, certifique-se de empacotá-lo em seu processo de construção