Pergunta

O meu webapp faz parte de uma orelha maior do que é implantado em um servidor WebSphere. O número hosts de servidores de outros aplicativos no mesmo servidor virtual. Meu webapp tem algumas verificações de inicialização / saúde em um método servletContextListener-> contextInitialized. Eu quero fazer o webapp indisponível se verifica inicialização / saúde falhar. O que é uma maneira realiable de fazer isso? Vai lançar um RuntimeException de dentro bastam contextInitialized? É o resto do EAR espera ainda estar disponível? Obrigado.

Foi útil?

Solução

Eu recomendo jogando um RuntimeException de ServletContextListener.contextInitialized.

Servlet 2.3 não foi muito claro sobre isso, mas Servlet 2.4 adicionado o seguinte detalhe:

Algumas exceções não ocorrem sob o pilha de chamadas de um outro componente na inscrição. Um exemplo disto é um ... ServletContextListener que lança uma excepção não processada durante um notificação de contexto servlet inicialização .... Nesse caso, o desenvolvedor não tem oportunidade de processar a excepção. o recipiente pode responder a todas as solicitações subseqüentes para a aplicação Web com um HTTP código de status 500 para indicar um aplicação de erro.

Uma vez que diz que o mecanismo de servlet "pode" desativar o acesso ao aplicativo, você pode encontrar um servidor que faz outra coisa. No entanto, Tomcat e WebLogic tanto desativar o aplicativo, ea única coisa razoável que eu posso pensar seria ignorar a exceção. Eu não posso ver um recipiente que fez isso ser muito popular-assim que você testá-lo melhor no WebSphere si mesmo.

Outras dicas

Jogando um RuntimeException vai provavelmente fazer apenas que servlet indisponíveis. A maneira mais segura pode ser implementar algo como um interceptador de Primavera que irá encaminhar para uma página de erro ou alguma coisa, se os controlos não deu certo. Dessa forma, você não precisa para evitar o aplicativo de carregamento, mas pode lidar com isso mais graciosamente em tempo de execução.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top