Servlets vs. EJB

Olá pessoal !

Tenho uma dúvida que para muitos poderá parecer obvia, mas vamos lá:

Imaginem que tenho um Servlet que corresponderá a criação de um usuário em um sistema qualquer. A inclusão do usuário em uma tabela do sistema deveria ser feita diretamente pelo Servlet, ou através da invocação de um EJB ? Qual cenário é mais adequado as Design Patterns, MVC, etc ?

O ideal seria fazer de seu servlet um controlador, repassando as solicitações para classes de modelo (EJB, javaBeans etc) e exibindo os dados com jsp, velocity, xslt etc. Caberia ao modelo fazer toda a sua regra de negócio.

Em outras palavras, o Servlet faz a chamada ao metodo de inclusao, que devera estar em uma classe especifica. Por exemplo, na classe Usuario voce tem o metodo addNew()…
Se voce tiver uma pagina de cadastro de usuarios via Web, o usuario preenche os dados e da o submit. Entao o Servlet ( o Controller, que eh responsavel por mandar cada coisa para o seu lugar apropriado, em um ambiente MVC ) ve que voce esta qurendo adicionar um novo usuario ( com base em algum parametro da URL - por exemplo, aqui num sistema que estou fazendo, passo o prametro “modulo” com o nome do modulo responsavel pelo processamento das acoes ) e entao, nessa classe/conjunto de classes especificos para manipulacao de usuarios, voce chama o metodo correspondende da classe “Usuario” para adicionar os dados.

Rafael

Rafael, este controller seria nos design Patterns o “Front Controller” ?

Como alguem jah falou aqui no forum, vc soh aproveita todo o poder do EJB se vc estiver trabalhando em um sistema distribuido, por exemplo no caso de a sua aplicacao web acessar componentes que estao localizados em sites remotos.

Tirando um cenario de aplicacao distribuida, eu acho que uma das poucas vantagens eh fazer Entity Beans que tiram a necessidade de vc fazer manipulação direta no banco de dados.

FLC, imagino que em um cenário onde eu tenha uma Aplicaçào WEB acessando objetos em alguns servidores para fazer “load balancing”, por exemplo, seria uma boa utilização para o EJB, ou não ? :roll:

Isso Leo, eh o Front Controller mesmo. E muito provavelmente voca ira fazer uso de Command tmb.

EJBs sao terrivelmente mais pesados… nao conheco mto dessa area, mas acho que voec consegue fazer load balancing direto no tomcat tmb… parece que ele ja tem suporte a aplicaoes em cluster… mas teria que confirmar.

Rafael