Configure o JBoss7 / EAP6 para desimplantar aplicativos antes do desligamento

2

Quando eu implemento meu aplicativo JEE6 no JBoss EAP 6.3 e encerro o servidor antes de manualmente desimplantar o aplicativo, recebo exceções inesperadas (veja abaixo).

Estou procurando uma maneira de tornar o trabalho de desligamento ou uma fonte confiável que declare que ele não funciona e não será corrigido.

No entanto, o encerramento do aplicativo funciona bem, se feito manualmente (exclua o diretório .ear do diretório de implantação, aguarde a remoção de implementação e, em seguida, encerre o JB). Nenhuma exceção ocorre e tudo funciona conforme o esperado.

Então, eu suponho que existe uma maneira de configurar o JBoss de uma maneira que automaticamente desligue o servidor, envie um sinal de parada para os aplicativos, espere até que eles desapareçam ou atinjam o tempo limite e desligue o servidor.

Eu encerro o JBoss 7 com este comando:

jboss-cli.bat --connect --command=:shutdown --timeout=30000 --controller=127.0.0.1:9999

As exceções que recebo (por exemplo, JBAS0141134) me fazem pensar que o JBoss está removendo Beans e Recursos dos quais meu aplicativo depende antes que a sequência de desligamento seja concluída.

Eu controlo o meu processo de encerramento dentro de um @PreDestroy dentro de um @Singleton que chama alguns @Stateless beans que, por sua vez, têm os recursos da base de dados, etc.

A exceção mais importante que recebo:

ERROR - JBAS014134: 
   EJB-Aufruf an Komponente MyStatelessBean
      für Methode public abstract void MyStatelessLocal.performShutdownOperation() fehlgeschlagen:
   javax.ejb.EJBAccessException: JBAS014502: 
   Aufruf an Methode: public abstract void MyStatelessLocal.performShutdownOperation() 
      von Bean: MyStatelessBean ist nicht gestattet

(a indentação é minha)

Lembre-se de que, apesar de dizer "chamada não é permitida", a chamada funciona bem se eu remover a implantação do aplicativo, sem desligar o servidor.

    
por Angelo Fuchs 03.12.2015 / 15:34

0 respostas