Dúvida - Integração de aplicações (ear)

5 respostas
L

Olá pessoal, estou com uma dúvida,
Quando fazemos o deploy de mais de um ear em um servidor de aplicação (estou usando o JBOSS), os dois compartilham os seus jars internos?

Pergunto isso pois trabalho em um hospital. A idéia inicial é que se tenha uma base de dados enorme, cada qual com seu esquema separando os dados, e que haja vários sistemas. Cada sistema seria responsável por uma área de negócio. Imaginem um sistema da área da farmácia, prontuário eletrônico, agendamento e etc. Apesar de pensarmos que cada sistema deva ser um ear, ou seja, um componente “independente”, cada um tem suas dependências com outros sistemas. Por exemplo, no prontuário temos uma classe mapeada “Paciente” e está em um jar junto com outras entidades no prontuario.ear. Porém, no sistema de óbito, precisamos relacionar a classe mapeada “EntradaÓbito” com o seu devido paciente. Nesse caso, o paciente está num jar em um outro ear. Se eu colocar os dois ears (prontuario.ear e obito.ear) no servidor, o obito é capaz de encontrar paciente, sem que eu tenho que adicionar o jar das entidades do prontuário no ear de obito?

Estou meio confusa com esse tipo de integração. Realmente não sei se esse é a melhor maneira.
Preciso integrar esses vários sistemas não apenas com serviços (onde eu poderia disponibilizar através de um Web Service), preciso integrá-los através de uma base de dados.

Alguém já passou por isso?

Detalhe: fiz um teste aqui. Tenho 3 ears, só que os que dependem das entidades de outros possuem jar duplicados. Até então estava funcionando. Mas agora adicionei um outro ear que depende das entidades de outros dois e está dando erro. Não consigo fazer lookup. Já tentei isolar o class loading, mas aí dá erro de mapeamento, dizendo que a classe não foi mapeada (sendo que funcionava antes). Para entenderem melhor, segue a estrutura:

app1.ear
–app1_entities.jar
–app1_services.jar (stateless com interface remota)
–app1_services_impl.jar (interfaces dos stateless)
app2.ear
–app2_entities.jar
–app2_service.jar
–app2_service_impl.jar
–app1_entities.jar
–app1_services.jar
app3.ear
–app3_entities.jar
–app3_service.jar
–app3_service_impl.jar
–app1_entities.jar
–app1_services.jar
–app2_entities.jar
–app2_services.jar

Nesse caso, em qual ear é feito o deploy das entities primeiro? Existe algum problema em replicar as entidades?

Obrigada.

5 Respostas

aleck

Dê uma procurada em Shared Library no JBoss, resumidamente esta funcionalidade lhe daria a opção de compartilhar os jars.

L

Oi aleck,

aleck:

Dê uma procurada em Shared Library no JBoss, resumidamente esta funcionalidade lhe daria a opção de compartilhar os jars.

Estou ainda estudando como fazer tudo isso. Já pensei nisso, mas fiquei com medo em como lidar com versões, caso um dia eu precise. Pois desse jeito, eu teria apenas uma versão para todas as aplicações.

Vou dar uma lida na documentação do jboss.

Pessoal, mais alguma sugestão? Tow no caminho certo ou errado?

Brigadão!

aleck

Você pode criar diversas shared libraries e as aplicações “escolhem” qual vão utilizar. Não é nada complicado e fácil de manter.

Acho que você está no caminho certo sim, pq qualquer coisa fora dessa linha de pensamento se torna complicado e necessita de muitos subterfugios para fazer funcionar 100%.

L

aleck,

As shared libraries são os jars que estão localizados na pasta lib de um servidor? Por exemplo, $JBOSS_HOME/server/all/lib?

Como as aplicações podem “escolher” essas shared libraries? Eu poderia ter duas versões de um msm componente e informar qual desses minha aplicação usuaria?

Obrigada!

F

Da uma olhada aqui: http://www.jboss.org/wiki/Wiki.jsp?page=ClassLoadingConfiguration

[]'s

Fred

Criado 26 de março de 2008
Ultima resposta 29 de mar. de 2008
Respostas 5
Participantes 3