Duvida conceitual EJB

3 respostas
java
S

Olá pessoal, estou com uma duvida quanto ao desenvolvimento de aplicaçãoes distribuidas utilizando EJB.
Minha dúvida é a seguinte, como faço para consumir um EJB que está em um host ou cluster diferente do meu cliente(Webservice REST)? Gostaria de saber se tenho que usar JNDI, ou usando simplesmente a anotação @inject o container vai encontrar e injetar corretamente o EJB que está em outro host?

3 Respostas

Lucas_Camara

Você deve deixar seu EJB remoto e fazer o lookup do mesmo. No lookup, você deve informar o IP do host remoto.

S

Caraca, serio que tem que fazer isso mesmoi? Pensei que fosse mais transparente isso. Então que dizer ao inves de usar DI, tenho que fazer lookup? O Di só serve para desenvolvimento local? Se for isso mesmo acabo de me frustar com o EJB. Teria como você mostrar um exemplo?

Lucas_Camara

Para EJB’s remotos é necessário o lookup pois são duas JVM’s diferentes. Veja um exemplo de lookup usando JBoss:

Crie um arquivo chamado jndi.properties e coloque nele:

java.naming.factory.initial=org.jboss.naming.remote.client.InitialContextFactory
java.naming.provider.url=remote://localhost:4447

Então, faça o lookup assim:

void doLookup() {
    // Create an InitialContext using the javax.naming.* API
    Context ctx = new InitialContext();
    ctx.lookup("foo/bar");
}

Fonte: Remote EJB invocations via JNDI - EJB client API or remote-naming

Criado 18 de julho de 2016
Ultima resposta 18 de jul. de 2016
Respostas 3
Participantes 2