Olá pessoal,
Estou iniciando meus estudos em EJB e tenho algumas dúvidas. Gostaria que me ajudassem, dentro do possível, para que eu possa entender melhor como essa arquitetura funciona.
Pois bem, vamos aos fatos…
Em um servidor eu possuo meus JSPs, Servlets, HTML, JSF, etc. Em outro servidor estão os EJBs, com as regras de negócios e persitência de Entities JPA. É aqui que está minha dúvidas principais:
-
Considerando que a persitência será gerenciada neste servidor onde residem os EJBs, obviamente o EntityManager deverá ser configurado neste mesmo servidor. Correto?
-
Porém, se por exemplo,eu tenho um objeto do tipo Aluno que é um EntityBean JPA e desejo exibir os atributos desse aluno (nome, idade, e-mail) em uma página JSF no primeiro servidor, como os servlets possuem referências a essa classe Aluno uma vez que ela está em outro servidor?
-
O meu cliente EJB deverá trazer as classes EntityBeans para o classpath do servidor web onde estão apenas meus JSPs e Servlets?
Isso é que está um pouco confuso pra mim ainda.
Obrigado a todos
Vou explicar mais ou menos como funciona em um sistema real em que estou presente.
No módulo client tenho as interfaces do meu business e meus objetos visuais(VO). Objetos visuais são mais ou menos iguais às da entidade, e servem para ser exibidas no front-end.
No módulo business tenho minhas entidades, meus DAOs e as implementações das interfaces.
No módulo de front-end tenho minhas actions e templates.
Agora q está o pulo do gato.
O módulo client está presente tanto na lib de meu front-end, quanto na lib de meu business. Assim meu service transforma a entidade em VO, e a retorna para meu front-end.
Deu pra entender mais ou menos ??
Ótimo Aluisio. Essa era minha grande dúvida, ou seja, se os VO estavam no lado cliente , no lado servidor ou em ambos. Agora percebi que o módulo cliente do EJB deve conter essas classes e estar em ambos servidores.
Obrigado por sua resposta.
Agora, será que é possível usar EntiyBeans no lugar dos VOs para que eu possa fazer a persitência com JPA ou dá na mesma?
A persistência é feita com as entidades q estão no módulo business, q são os entitybeans.
Qndo o service passa, por exemplo, uma lista de clientes para o front-end, ele pega a List<Cliente> retornado da pesquisa, transforma para List<ClientesVO> e retorna essa lista para o front-end. Já q o front-end não conhece a entidade Cliente(está no módulo business, e não deve ser utilizado no front-end).
E o inverso acontece qndo o front-end pega os dados de um form e coloca no ClienteVO. Na camada do business ele transforma o VO na entidade Cliente e persiste no banco de dados.
Agora entendi.
Muito obrigado pela resposta.
abraço