Maven + Aplicação Distribuída

4 respostas
Marcio_N_Carvalho

Pessoal,

Estou refatorando um projeto WEB utilizando as seguintes Tecnologias (JPA 2, JSF 2.1, EJB 3.1 e MAVEN 3).
Na nova arquitetura optei por encapsular cada Tarefa da minha aplicação em um EJB separado. Ficou + ou - assim:

Client
.War
— Páginas Web
— Managed Beans (Meus Managed Beans invocam os EJBs de Tarefas)

Server

Camada Business (Session Beans)

— EJB Tarefa 1;

— EJB Tarefa 2;

Camada Modelo

— EJB Modelo 

— DAOs;

— Entidades;

Modularizei dessa forma meus EJBs para que fosse fácil a manutenção de uma determinada Tarefa.
Adicionei Meu EJB Modelo como dependência no EJB Tarefa e assim como Dependência da camada Client.

Minha pergunta é:
Como faço para substituir um EJB (Dependência) após manutenção sem ter que fazer um novo deploy de tudo?

Imaginem que tive um problema na Tarefa 1, então realizei a manutenção devida e preciso substituir este EJB (jar).
Gostaria que, a cada execução meu projeto buscasse os meus EJBs sempre de um determinado repositório atualizado. Isso é possivel?

Preciso dessa força… Opiniões também são bem vindas.

Abraço

4 Respostas

ivandasilva

Não sei se entendi muito bem, mas me parece que você quer um cara que armazene sempre a última versão do jar que contém o EJB, e sempre que fizer build buscar a última versão em um repositório.

Se for isto você pode instalar um gerenciador de dependências e durante o processo de build obter a última versão do seu jar deste gerenciador de dependências.

Dá uma olhada no Archifactory, mas tem vários outros…

Marcio_N_Carvalho

Olá Ivan,

Utilizo o Artifactory no meu ambiente de Desenvolvimento apenas para compartilhamos as libs entre os desenvolvedores.
Só não sei como configurar para que meu projeto recupere sempre meu jar(EJB) atualizado.

A grosso modo tentei fazer o seguinte:

  • Substituir o jar diretamente na pasta aplication do glassfish, isso não rola pois o JAR está preso na JVM.
    Não queria ter que reimplantar o projeto novamente, queria apenas substituir o jar.

Alguma ideia?

valeu

ivandasilva

Eu acredito que em tempo de execução você não vai conseguir fazer, vai ter que parar o servidor e refazer o deploy. O que você pode fazer é alterar o número da versão do seu jar, assim ele vai ser salvo no Artifactory e quando o restante da equipe for mexer no projeto basta fazer o update/merge do pom.xml que será obtida a última versão do Artifactory

Marcio_N_Carvalho

Ivan,

Desde já agradeço a ajuda.

Havia pensado no seguinte cara (vê se estou viajando rs…):
Posso manter um repositório no meu servidor (Uma espécie de espelho do que está implantado no Glassfish).
Após manutenção no meu EJB, atualizo este repositório, faço o Deploy novamente e reimplanto o projeto no Glassfish.

Só que dai entro em um detalhe que já testei e não obtive sucesso: como faço para implantar o projeto no Glassfish a partir do Maven?
Se não me engano tem um comando mvn glassfish:deploy mas precisa de algumas configurações no pom do projeto, porém tentei configurar mais não rolou.

abs,

Criado 24 de fevereiro de 2012
Ultima resposta 24 de fev. de 2012
Respostas 4
Participantes 2