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?
Duvida conceitual EJB
S
3 Respostas
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?
1 like
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
Alura Sistemas operacionais: entenda seu conceito e suas funções Descubra o que são sistemas operacionais, suas funções e tipos. Aprenda tudo de forma clara e objetiva. Não perca tempo!
Casa do Codigo Guia pratico de TypeScript: Melhore suas aplicacoes... Por Thiago da Silva Adriano — Casa do Codigo