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:

  1. 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();
    }
    

    }

  2. 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?

Foi útil?

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top