Existe um método preferido para atualizar aplicativos que usam um EJB?
-
05-07-2019 - |
Pergunta
Eu tenho um aplicativo java que trabalha com um EJB, no entanto, se:
- O EJB é atualizado, o aplicativo está quebrado.
- O servidor de aplicativo é atualizado, o aplicativo está quebrado.
Sem o envolvimento humano, há um método preferido para atualizar os frascos do cliente para o servidor de aplicativo e feijão?
Se houver método preferido depende do servidor de aplicativo, em seguida, assumir jboss.
Solução
Essa é uma das razões pelas quais as pessoas estão migrando para serviços web :) ou uso JMS também.
Realmente, se o seu servidor de aplicativo é atualizado ou fornecedor for alterado, não há nenhuma maneira seus antigos topos / estrangeiros irá trabalhar com o novo código no lado do servidor. : - (
Lembre-EJB declarou que deve haver um papel implementador de aplicativos? Cabe a ele para preparar client.jar para aplicativos cliente e distribuí-lo (ou seja, é o empacotador aplicação não importa; o ponto é: não é um automático operação).
Alguns truques podem ser possível (como exigir colocando client.jar em lugar específico no servidor para baixá-lo pelo cliente em primeiro lugar, em seguida, usar carregador de classe para uso), mas esses são mais hacks que a prática estabelecida.
Quanto especificidades JBoss, eu não tenho nenhuma informação.
Outras dicas
Você está problema básico é que, se o contrato de interface entre um componente muda ele quebra o outro componente. Este não é um problema limitado a Aplicativos e EJBs, ele simplesmente is not seguro compilador.
A abordagem só automatizado que eu conheço é a configuração de seus projetos, de tal forma a tornar o projeto App depende do projeto EJB (dentro dos arquivos do IDE e construir), dando-lhe a verificação do compilador. E implantá-los juntos como um EAR.
Se isso não é uma opção, e eles devem ser implantados separadamente, do que suas necessidades de desenvolvedores EJB estar em seu jogo sobre como manter as interfaces compatíveis com versões anteriores intactos.