Caros amigos,
Um servidor completo Java EE possui container Web e container EJB. Mas o que exatamente roda em cada um deles?
Serlvets e JSP rodam em container Web, e componentes EJB rodam em container EJB. Mas e o resto?
Por exemplo,
Numa arquitetura da seguinte forma:
Os servlets e JSP rodam no container Web e o EJB no container EJB
Mas e na arquitetura?
[quote]
Servlets e JSP | > | Objetos POJO representando camada de negocoos | > | Padrao DAO com Hibernate
[/quote
Onde rodam as classes de negocia e minhas classes DAO? No container Web? Ou em outro lugar do servidor de aplicação?
Rodam no container web.
O Container WEB roda JSP, Servlet, JavaBeans e objetos Java sem ligação direta ao container web. Assim como suas classes de negócios, serviços, dao e etc não está associada diretamente ao container, ela pode rodar em um container web.
Lembrando que para a parte de persistencia, o ideal é utilizar alguma ORM (como o Hibernate) ou a especificação JPA. Essa que roda tanto em ambientes JSE como ambientes JEE. A diferença que rodando ela sob um container EJB, voc6e ganha algumas vantagens como controle automático de transação, pool de conexões, segurança e etc.
Entendi, era exatamente o que eu imaginava.
Entao, mesmo que minha arquitetura seja:
Servlets >> EJB >> Padrao DAO com Hibernate
as minhas classes DAO ficam em container Web? Queri dizer, o fluxo da aplicação fica container Web >> container EJB >> container Web novamente?
Fala Abrhaao,
Pois bem, quando utilizamos este tipo de arquitetura a intenção é realizar a separação física dos layer de nossa aplicação entre diferentes tiers, neste caso você deve usar o container web somente para a camada de apresentação, ou seja vc só colocará lá coisas pertinentes a apresentação de sua aplicação ( Servlets, JSP, Data Transfer Objects e qq outra coisa relacionada ). Toda a parte de regras negócio e acesso a camada de integração ficará no seu container EJB. Óbvio que eu estou inferindo q você trabalhará com dois nós físicos distintos. Nesse sentido a única coisa que existiria nos dois nós seria os Data Transfer Objects, que precisam ser passados do tier de negócios para o de apresentação e vice-versa.
Esta não é o unico estilo arquitetura, tb existe a possibilidade de você realizar o deployment desta aplicação em um .EAR, e desta forma você só teria a separação lógica entre as suas camadas.
Fui claro ??? 
[quote=Abrhaao]Entendi, era exatamente o que eu imaginava.
Entao, mesmo que minha arquitetura seja:
Servlets >> EJB >> Padrao DAO com Hibernate
as minhas classes DAO ficam em container Web? Queri dizer, o fluxo da aplicação fica container Web >> container EJB >> container Web novamente?
[/quote]
Depende muito 
Mas a primeira pergunta é: seu web container vai ficar fisicamente separado do EJB Container? por exemplo: tomcat em uma máquina X, e servidor de aplicação (glassfish por exemplo) em servidor Y? Se não for esse o caso, você não deve pensar em webcontainer e ejb container, mas pense tudo em Servidor de Aplicação, e ponto :!: O seu sistema será dividido por projetos (projeto web, ejb module, utility jar e claro, EAR project).
Supondo que você irá utilizar JPA para persistência, você pode criar as entidades diretamente no EJB Module (bastante comum) ou então criar um projeto a parte (um Utility JARs) e colocar as entidades nesse projeto a parte (isso é bastante interessante quando você quer separar o layer de persistencia com o layer de ejb).
Espero que tenha ficado claro