Eu sempre me perguntei quando usar EJBs, continuo me perguntando até hoje e ainda não achei a resposta. Onde trabalho usamos EJBs nas regras de negócio, mas as classes estão distribui-das localmente num servidor só então imagino que não seja a questão do balanço de carga, métodos remotos e coisas do gênero. Bom, ao menos eu sei que as transações são gerenciadas pelo container, mas isso tem tanto valora assim? Hoje em dia consigo ter minhas transações gerenciadas por um framework como o Seam no meu bom e velho tomcat/jetty e ser feliz com isso.
Bem até hoje posso não saber bem quando e porque se usar um EJB, mas eu como um bom usuário do Seam, vi que a especificação WebBeans nasceu da ideia de fazer os managed-beans do JSF serem EJBs, assim como no Seam tu pode por o component que é um managed-bean ser um EJB statefull ou stateless. Legal, então se ter um managed-bean que é um EJB é algo importante, afinal virou uma especificação eu me pergunto:
Porque isso é importante?
O que isso muda em termos? Que diferença faz eu der lá o meu managed bean com uma anotação Stateless ou Statefull (no caso um @WebBean que faz isso tudo magicamente)? Sempre soube também que EJBs foram feitos para serem “reusaveis”, um WebBean é reusavel? Digo, vou fazer minha pagina com formulario de cadastro de cliente e reusar em outras aplicações? Estranho, já que normalmente a tela/valores vai mudar de cliente para cliente então no final vai ter que ser refeito de qualquer forma, então imagino que ao menos os WebBeans não foram feitos para serem reusáveis (ou pode ser ignorancia minha de algum pattern para tal feito).
Agora por exemplo, vamos imaginar os desenvolvedores do Rails, eles estão fazendo aplicações ai na velocidade da luz (
) e não precisam de Statefull ou Stateless nas classes deles para sairem vendendo seus sistemas. Digo imagine que tu tem que fazer um sistema para um supermercado, porque se usaria um EJB? O que isso iria te trazer de benficio? E tem que ser algo bem prático, não vale dizer “para alta escalabilidade do sistema”. E nesse contexto o que um @WebBean vai facilitar na hora de desenvolver esse sistema?
Bom resumindo o que eu gostaria de saber é:
- EJB não faz sentido em aplicações menores que “gigante”? Sim ou não e porque.
- O que o WebBeans muda na vida do individuo que faz sistemas de pequeno médio porte?
Não pensem que sou anti-java. Longe disso, só não intendo porque alguém usaria um EJB. E me pergunto se o WebBeans vai ser um EJB que faz sentido.
Israel

