Estou fazendo uns testes com lookup Remoto via JNDI no JBoss AS 7, mas não está dando certo, e também não sei onde está o problema.
Criei uma interface para um EJB bem simples, utilizando a anotação @Remote no módulo do cliente, que vai junto com o módulo do EJB dentro da aplicação EAR.
Quando levando o servidor, aparecem os seguintes JNDI’s:
java:global/hello-ear/hello-ejb/HelloBean!com.hello.HelloBeanRemote
java:app/hello-ejb/HelloBean!com.hello.HelloBeanRemote
java:module/HelloBean!com.hello.HelloBeanRemote
java:jboss/exported/hello-ear/hello-ejb/HelloBean!com.hello.HelloBeanRemote
java:global/hello-ear/hello-ejb/HelloBean
java:app/hello-ejb/HelloBean
java:module/HelloBean
Até então parece que meu bean está carregando corretamente, tanto que consigo acessá-lo normalmente via aplicação web dentro do AS. Mas quando chamo ele através de uma aplicação de teste JavaSE, recebo uma exceção javax.naming.NameNotFoundException.
O código da minha aplicação cliente:
public static void main(String[] args) {
Properties props = new Properties();
props.put(Context.SECURITY_PRINCIPAL, "client");
props.put(Context.SECURITY_CREDENTIALS, "abc123");
try {
Context context = new InitialContext(props);
HelloBeanRemote helloBean =
(HelloBeanRemote)context.lookup("java:global/hello-ear/hello-ejb/HelloBean!com.hello.HelloBeanRemote");
JOptionPane.showMessageDialog(null, helloBean.sayHello());
} catch (NamingException e) {
e.printStackTrace();
}
}
Meu StackTrace (só dá essa exceção mesmo):
javax.naming.NameNotFoundException: global/hello-ear/hello-ejb/HelloBean!com.hello.HelloBeanRemote -- service jboss.naming.context.java.jboss.exported.global.hello-ear.hello-ejb."HelloBean!com.hello.HelloBeanRemote"
at org.jboss.as.naming.ServiceBasedNamingStore.lookup(ServiceBasedNamingStore.java:97)
at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:178)
at org.jboss.naming.remote.protocol.v1.Protocol$1.handleServerMessage(Protocol.java:127)
at org.jboss.naming.remote.protocol.v1.RemoteNamingServerV1$MessageReciever$1.run(RemoteNamingServerV1.java:73)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Alguém sabe dizer o que pode estar acontecendo?
Rodei pelos fóruns da JBoss e vi muita gente com problemas parecidos mas nenhuma solução…