Galera, o problema eh outro, lembrando que:
Caso o acesso seja a outra jvm as interfaces remotas e os stubs tambem devem ser distribuidos
Como o deploy foi feito em dois appservers diferentes os ejbs nao serao publicados na mesma JNDI (a nao ser que tenha sido configurado para isso!).
Logo vc precisa avisar ao InitialContext onde esta a jndi do outro appserver se nao o lookup nao vai achar ninguem do outro app server.
O InitialContext pode receber um HashTable com informacoes de configuracao (ver mais em javax.naming.Context) como urls, usuario, senha etc.
Procure na documentacao do app server o que deve ser passado como parametro no InitialContext para que ele encontre a outra jndi, a key que representa essa configuracao eh Context.PROVIDER_URL.
import javax.naming.*;
import java.util.*;
public class TesteJndi
{
public static void main(String[] args) {
Hashtable env = new Hashtable(11);
env.put(Context.PROVIDER_URL, "ProcureNosDocsDoAppServer://oque_vai_aqui:000");
try{
Context ctx = new InitialContext(env);
ctx.lookup("ejb/EjbB"); // aqui o lookup no outro container
.....
}catch(Exception e){
e.printStackTrace();
}
}
}
aqui um codigo para jrun 3.x, onde alem do provider o usuario e senha tb sao passados:
...
import javax.naming.InitialContext;
import javax.naming.Context;
...
try {
Properties properties = new Properties();
properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "allaire.ejipt.ContextFactory");
properties.setProperty(Context.PROVIDER_URL, "ejipt://remotehost:2773");
String user_name = "client";
String password = "client";
properties.setProperty(Context.SECURITY_PRINCIPAL, user_name);
properties.setProperty(Context.SECURITY_CREDENTIALS, password);
Context ctx = new InitialContext(properties);
...
mais um codigo, soh que com weblogic:
private Context getInitialContext() throws NamingException {
Hashtable h = new Hashtable();
h.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
h.put(Context.PROVIDER_URL, "t3://localhost:7001");
h.put(Context.SECURITY_PRINCIPAL, "username");
h.put(Context.SECURITY_CREDENTIALS, "password");
return new InitialContext(h);
}
Eh isso ai,
abraco,