[RESOLVIDO] Comunicação entre lógica de negócio EJB 3 + cliente web (jsp+servlet)

Olá, estou aprendendo EJB através do livro EJB 3 in action, porém, no capitulo 2, ele apresenta um “hello world” local, e ai surgiram algumas dúvidas…

  • Como que eu faço para rodar por exemplo, em um projeto, somente a lógica em EJB (tipo um método sayHello) e em outro projeto, um cliente web que chamaria esse método através de DI (devo copiar a interface do Bean para o projeto do cliente?)?

  • Posso colocar esses dois projetos em servidores diferentes, um no Japão e outro no Brasil (ex) :smiley: ? se sim, então como isso é possível?

estou brincando no JBoss 7.1

agradeço a paciência de vocês :wink:

Quanto á primeira pergunta, basta vc adicionar o projeto EJB ao classpath da sua aplicação Web, e na sua servlet vc chamaria o seu EJB através de sua interface Local, assim:

@EJB NomeDoMeuEJBLocal;

Quanto a segunda pergunta, é possível sim, nesse caso vc usaria a interface Remota. Procure artigos sobre Lookup JNDI de EJB.

[quote=hugo.hlcxcx]Quanto á primeira pergunta, basta vc adicionar o projeto EJB ao classpath da sua aplicação Web, e na sua servlet vc chamaria o seu EJB através de sua interface Local, assim:

@EJB NomeDoMeuEJBLocal;

Quanto a segunda pergunta, é possível sim, nesse caso vc usaria a interface Remota. Procure artigos sobre Lookup JNDI de EJB.[/quote]

Certo, mas eu tenho que adicionar o projeto EJB todo ao classpath? ou somente a interface do bean? e se eu for colocar os projetos em servidores separados, ainda tenho que adiconar no classpath? :?

agora mesmo vou pesquisar sobre o que vc me recomendou, Lookup JNDI de EJB . Eu ja tinha lido um pouco sobre o assunto no livro, até onde eu sei, a anotação de DI @EJB faz isso por trás dos panos quando o container não consegue encontrar o bean localmente (me corrija se eu estiver errado). :smiley:

obrigado pela resposta.

Nesse post tem um exemplo com JSF: Aplicação Web Completa JSF EJB JPA JAAS.

Você poderá adicionar apenas a interface na sua aplicação remota web e configurar o caminho do JNDI.

Com isso, o próprio container fará a chamada remota para você.

Caso você utilize JBoss 6 basta você adicionar o projeto EJB no seu projeto Web e depois fazer o deploy no mesmo servidor do war e do jar.

Se for JBoss 7, coloque tudo dentro de um EAR.

[quote=jakefrog]Nesse post tem um exemplo com JSF: Aplicação Web Completa JSF EJB JPA JAAS.

Você poderá adicionar apenas a interface na sua aplicação remota web e configurar o caminho do JNDI.

Com isso, o próprio container fará a chamada remota para você.

Caso você utilize JBoss 6 basta você adicionar o projeto EJB no seu projeto Web e depois fazer o deploy no mesmo servidor do war e do jar.

Se for JBoss 7, coloque tudo dentro de um EAR.[/quote]

ok, vou ver. Obrigado a todos.