EJB 3: quando usar?

Fala galera :smiley:

Estou num projeto pequeno/medio porte e vcs sabem me dizer quando se existe a necessidade de usar EJB? Já li umas discussões antigas do pessoal, mas queria uma opinião mais recente.

Abs

Em “toooda” a minha vida em análise de sistemas, eu só trabalhei com um sistema que realmente tinha a necessidade de usar EJB. =D
Pra definir se você vai realmente precisar ou não, tem que sentar e pensar.
Abraço

O EJB 3 passa a ser interessante quando se começa a utilizar banco de dados, e precisa de um contexto transacional, que é uma região de código que dura vários métodos cuja execução precisa estar numa transação. Também é útil quando se recebe dados de filas JMS, mas nunca vi uma aplicação pequena usar isso.

Claro que dá pra usar banco de dados sem EJB, mas isso significa que toda hora vai ter buscar o UserTransaction, o EntityManager ou o DataSource.

Mas claro, também é possível usar o Spring, mas se eu continuar vou gerar revolta no GUJ.

[quote=Leonardo3001]O EJB 3 passa a ser interessante quando se começa a utilizar banco de dados, e precisa de um contexto transacional, que é uma região de código que dura vários métodos cuja execução precisa estar numa transação. Também é útil quando se recebe dados de filas JMS, mas nunca vi uma aplicação pequena usar isso.

Claro que dá pra usar banco de dados sem EJB, mas isso significa que toda hora vai ter buscar o UserTransaction, o EntityManager ou o DataSource.

Mas claro, também é possível usar o Spring, mas se eu continuar vou gerar revolta no GUJ.[/quote]

Spring++ :slight_smile:

Não entendi.

Pior é ter que ficar passando a Connection para dentro de cada método ou como parâmetro para um construtor e fazer o controle transacional na mão.

EJB nba sua versão 3.0 se torna interessante a todos que desejam separar sua aplicação e querem fazer isso com algo simples e claro…

EJB ? Simples ?

Sim, apartir da versao 3.0 ele se tornou MUITO facil, simples, DRY , etc…

Foi-se o tempo em que ele era pesado e complicado… agora até o Spring vai implementar o primeiro profile do EJB 3.1… ou seja… no final , quem tem a aplicação em cima dos antigamente TEMIVEIS EJB, vai estar segurado até pela sua maior alternativa… o Spring. :slight_smile:

Na minha opinião, nunca.

“Calma, calma, não priemos cânico…” Não é assim também. Há necessidade de utilizar em muitas situações sim. “Cada um no seu quadrado”. :slight_smile:

Na minha opinião, nunca.[/quote]
Isso mesmo, na sua opinião então o JBoss Seam deve ser jogado no lixo [por inferência lógica].

Aliás, por bom senso, deveríamos tomar muito cuidado em usar as palavras nunca, sempre, todos, jamais.

Parece que nunca fizeram vestibular da FUVEST!!rs

Motivo número 1:

Quando o gerentão diz: “Vai ter que usar EJBn neste projeto, reunião encerrada!”

flws

Eu nunca fiz :frowning:

Tem muita gente que emite opiniao pensando em EJB pré 3.0…

EJB 2.x , etc…

Rapaziada… quem nunca utilizou o 3.0 , por favor , deem uma lida e depois cheguem a conclusao.

Um problema que vejo mesmo usando EJB3 é que alguns app. servers (exemplo: OC4J 10G, Jboss 4.x) nao aceitam todas as features do EJB3 como fazer um simples DI (Dependency Injection) de um EJB via @EJB em um servelt ou managed bean (JSF).

E ja no caso do Spring temos isso e outras coisas ate mesmo com Tomcat.

Agora com as novidades do EJB 3.1, as coisas vao ficar bem mais interessantes. :twisted:

Na verdade o problema é exatamente esse: O pessoal “dá uma lida” e acha que EJB3 é genial, inovador e funciona. Aí quando tu fala com gente que lidou de fato com os problemas SÉRIOS do EJB3, como:

Tu vê que na prática as coisas não são bem assim não. Isso que o Rodrigo citou é só um detalhe, sem contar coisas como, por exemplo, tem app servers que implementam a funcionalidade de callbacks de entity beans do seu jeito, mesmo o código sendo idêntico.

Quem sabe, se um dia o EJB3 ficar maduro, aí sim pode ser que ele “pareça” ser interessante. Mas até lá, muitas águas vão rolar.

Na verdade o problema é exatamente esse: O pessoal “dá uma lida” e acha que EJB3 é genial, inovador e funciona. Aí quando tu fala com gente que lidou de fato com os problemas SÉRIOS do EJB3, como:

[/quote]

Este não é um problema do EJB3… é um problema da Oracle ou da atrasada da JBoss que levou mais de 2 anos para deixar seu servidor JavaEE 5.0 certificado… e não do EJB3. Utilize um container Java EE 5 Certificado e seja feliz.

Por que voce insiste falar que não funciona ?

Preciso de um exemplo deste ocorrido.

[quote=Leozin]
Quem sabe, se um dia o EJB3 ficar maduro, aí sim pode ser que ele “pareça” ser interessante. Mas até lá, muitas águas vão rolar.[/quote]

Maduro ? EJB3 é uma ESPECIFICAÇÃO , maduro tem que ser sua implementacao…

Com base em que você diz que EJB3 não é maduro ? Qual fato que ocorreu com voce que o deixou com esta certeza ?

Você citou dois app servers que não são Java EE 5 certified, quer que funcione como?

Porque os testes que fiz foram no Glassfish. Tem algum outro container JEE 5 certificado? Gostaria de ver se os problemas se repetem fora do Glassfish (já que ele é certificado).

Opa, essa foi mal minha mesmo. Não quis dizer que a especificação não é madura, quis dizer que quando todos os app servers implementarem corretamente a especificação aí sim as coisas vão andar. O “maduro” é referente a implementação que todos os app servers fazem.

Sobre esse código, eu vou fazê-lo denovo e posto aqui.

Abraço

[quote=Leozin][quote=chun]
Este não é um problema do EJB3… é um problema da Oracle ou da atrasada da JBoss que levou mais de 2 anos para deixar seu servidor JavaEE 5.0 certificado… e não do EJB3. Utilize um container Java EE 5 Certificado e seja feliz.

Por que voce insiste falar que não funciona ?

[/quote]

Porque os testes que fiz foram no Glassfish. Tem algum outro container JEE 5 certificado? Gostaria de ver se os problemas se repetem fora do Glassfish (já que ele é certificado).
[/quote]

Voce deve estar brincando né ? Voce REALMENTE acredita que só glassfish é certificado ?

http://java.sun.com/javaee/overview/compatibility.jsp

Agora , qual teste que voce fez ? O que ocorreu , e o que deveria ter ocorrido ?

Fico na espera do relato do problema para saber oque que é diferente entre um servidor e outro…
mas lembre-se , vamos nos ater a SPEC… é claro que um servidor pode implementar algo A MAIS que o outro…
Mas ambos tem que se portar MINIMAMENTE de acordo com a SPEC…

[quote=Leozin]
Sobre esse código, eu vou fazê-lo denovo e posto aqui.

Abraço[/quote]

OK… estamos a espera do codigo.