Mais uma da série Maven2, desta vez com EJBs.
Não são raras as vezes que desenvolvendo projetos que precisem de um pouco mais de robustes e controle de transações utilizem EJB’s.
Geralmente aplicações backend (utilizem EJBs) e frontend (consomem EJBs) ficam empacotados no mesmo arquivo EAR, por tanto, o codigo do bean e as interfaces de conexão entre os EJBs e o cliente ficam no mesmo pacote, até então nada de errado, nada de estranho.
No entanto, participando de uma aplicação que será consumida por clientes de forma remota, mas interna a empresa, algumas alternativas aparecem com prós e contras:
WebService
Prós: fácil de integrar com a grande maioria das aplicações que rodam na empresa, seja Delphi, VB, .Net e o próprio Java.
Contras: muito lento se comparado com modelos nativos.
Modelos nativos
Prós: hand-shake e troca de informação entre aplicações rápido.
Contra: fortemente acoplado, a aplicação deve saber se comunicar com a aplicação servidora de forma nativa.
Algums vezes WebService pode ser a melhor solução em se tratando de integração de aplicações de diferentes linguagens, por exemplo Java e .Net.
Em uma cenário em que existe uma aplicação cliente e uma aplicacao servidora em java não existe razão para conectar as aplicações através de WebService, a melhor opção neste caso seria RMI-IIOP.
Não é muito elegante e muito menos seguro entregar para o desenvolvedor da aplicação cliente um pacote JAR com todo o codigo (mesmo que compilado) incluindo a implementação do Bean.
Para isso, o Mave2 utiliza um plugin que gera um pacote JAR apenas com as interfaces necessárias para integracao das partes, de forma fácil e simples.
- Passo 1:
Inclua o trecho de código no pom dos EJBs:
<build> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-ejb-plugin</artifactId> <configuration> <generateClient>true</generateClient> <ejbVersion>3.0</ejbVersion> <clientExcludes> <clientExclude>br/com/mangar/ps/adm/business/dao/**/*</clientExclude> <clientExclude>br/com/mangar/ps/adm/business/util/**/*</clientExclude> <clientExclude>**/*Bean.class</clientExclude> </clientExcludes> </configuration> </plugin> </build>
Com esse código será gerado um pacote JAR como mesmo nome do pacote com os beans incluindo -client ao nome deste, que conterá todas as classes do pacote de EJB, exceto as classes do pacote dao, do pacote util e os Beans
- Passo 2
Para gerar o pacote, basta informar na linha de comando:
mvn ejb:ejb
Mais informações podem ser encontradas em: Maven EJB Plugin




