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)
? se sim, então como isso é possível?
estou brincando no JBoss 7.1
agradeço a paciência de vocês 
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). 
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.