Fala aí pessoal, blz? Onde trabalho estamos para definir nosso padrão de integração. Daí veio a idéia de utilizarmos EJB (3+) para integrar as aplicações Java<->Java e WebServices para Java<->Qquer outra tecnologia. A pergunta é, alguém aqui usa EJB (3+) neste contexto (integração)? Se sim, quais são os prós e contras que encontraram?
Obs.: A idéia é usar EJB (3+) para garantir atomicidade (transacional) entre as aplicações e também para utilizar mais nosso (sub-utilizado) servidor (JBoss).
Valeu!
Olá,
Nós aqui utilizamos EJB3+ para integrar Java <-> Java. O resultado é bom. Os Containers possuem ótimo mecanismo de gerenciamento de transação/ciclo de vida. No caso utilizamos o GF 3.1+. A performance é boa tb.
Voce só define as interfaces e utiliza lookup remoto.
Abraço.
Ainda não fiz integrações com o EJB 3, mas, estou lendo o EJB in Action e é muito bom.
Vi que é muito fácil fazer a integração Java2Java e Java2Others… Para fazer com que a sua interface remota fique acessível para outras tecnologias basta fazer via anotations…
O EJB 3 tem ferramentas poderosas para mexer com JMS e troca de mensagens assíncronas, coisas que o Spring Template por exemplo também tem, mas eu acredito que o EJB nesta parte é mais robusto… pelo menos me pareceu…
Uma aramadilha que os MDBs(Message Driven Beans) têm é que se você implementar um MessageListener e dentro dele por exemplo lançar uma exceção não verificada, do tipo ClassCastException a sua aplicação ficará em looping… porque o seu MDB voltará para o pool dentro do servidor de app e o listener vai tentar ler ele novamente. E assim para todo o sempre…
Outra coisa bacana que eu vi é que os Session Beans(Stateless) são Thread Safe, logo, você não precisa se preocupar com concorrência.
Pois é. Eu já havia implementado algo no EJB 2.X e apesar dos pesares, vi algumas vantagens (do container). Depois disso, passei a desenvolver e criar arquiteturas mais com spring. Daí no ano passado fiz o curso Java EE avançado da Caelum para dar uma reciclada e achei vários recursos interessantes e bem simples. O lance de publicar o EJB como webservice também, achei show de bola. Com isso, logo pensei no EJB (3+) como uma boa alternativa de integração para essas aplicações (que usam Spring). Inclusive é uma das coisas que preciso pesquisar melhor, integração Spring<->EJB pois, o contexto transacional deverá se "compartilhado" para garantir a atomicidade de algumas integrações. Alguém já fez algo parecido?
Obrigado pelas opiniões pessoal!
Embora as anotações para gerenciamento de tx sejam iguais, não dá para o EJB visualizar o contexto do Spring ou vice e versa… Você tem que decidir quem vai fazer o gerenciamento das transações por cada módulo do seu EAR. Embora seja bom estabelecer um padrão, acho que vc vai gastar mais tempo pensando em tomar a decisão certa do que efetivamente fazer o gerenciamento das transações.
Nunca usei o EJB com uma annotation do tipo @Transactional, então não vou saber te passar qual é melhor. O que eu sei, é que o EJB vai fazer isto a nível de Conteiner enquanto o Spring a nível de Contexto virtual, o contexto do Spring.
É uma pena que EJBs deixaram uma imagem tão negativa, oriunda das suas versões anteriores (com razão).
O nosso sistema aqui é na area de saúde, e fazemos integração usando Interfaces Remotas para serem integrados com outros apps Java, e o proprio EJB é exposto como WebService para ser consumido por Apps em outra tecnologia. Nosso sistema se integram com Sistemas em Delphi, principalmente, sem problemas, inclusive fazemos troca de arquivos atraves de webservices.
Abraço.
[quote=lucasmurata]É uma pena que EJBs deixaram uma imagem tão negativa, oriunda das suas versões anteriores (com razão).
O nosso sistema aqui é na area de saúde, e fazemos integração usando Interfaces Remotas para serem integrados com outros apps Java, e o proprio EJB é exposto como WebService para ser consumido por Apps em outra tecnologia. Nosso sistema se integram com Sistemas em Delphi, principalmente, sem problemas, inclusive fazemos troca de arquivos atraves de webservices.
Abraço.
[/quote]
Pois é, acredito que, por isso (pela fama antiga) muitas pessoas não usem. Ou pelo menos não divulgam. :lol:
Valeu!