[jboss-user] [JNDI/Naming/Network] - Cannot connect to a RMI server (RMI) from JBoss (JNDI)
analorite
do-not-reply at jboss.com
Fri Aug 10 08:24:42 EDT 2007
Hi everyone. I hope I am in the right forum.
I have problems to access to a remote RMI server from JBoss. I mean JBoss is the client.
My application run under Unix. My JBoss version is 4.0.2.
Following i describe my scenario:
- The Server: a pure java RMI server:
step 1) i start the RMI Registry:
agilent:/> rmiregistry -J-Djava.class.path=. &
step 2) i run the java rmi server.
agilent:/> java HelloServer
Hello Server is going to be already....
Hello Server already!
My server code is the following:
HelloImpl obj = new HelloImpl();
System.setProperty("java.security.policy", "java.policy");
System.setSecurityManager(new RMISecurityManager());
System.out.println("Hello Server is going to be already....");
Naming.rebind("HelloServer", obj);
System.out.println("Hello Server already!");
- The Client: A class within JBoss. My client code is the following:
String server = "rmi://10.95.18.121:1099/HelloServer";
try {
if (System.getSecurityManager()== null){
log.debug("GestorColeta::executeRemote ==> Crear RMISecurityManager");
System.setSecurityManager(new RMISecurityManager());
}else log.debug("GestorColeta::executeRemote ==> Ya existe RMISecurityManager");
Registry registry = LocateRegistry.getRegistry("10.95.18.121");
if (registry != null){
String[] entries = registry.list();
if (entries != null){
for (int x = 0; x < entries.length; x++){
log.debug("GestorColeta::executeRemote ==> Vinculos disponibles[" + x + "]:" + entries[x] );
}
}else log.debug("GestorColeta::executeRemote ==> Fallo al obtener vínculos disponibles");
} else log.debug("GestorColeta::executeRemote ==> Fallo al obtener el registro");
/*Properties prop = new Properties();
prop.put("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");
prop.put("java.naming.provider.url","rmi://10.95.18.121:1099");
prop.put("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");
Context c = new InitialContext(prop);*/
log.debug("GestorColeta::executeRemote ==> Naming lookup...");
//Hello gestor = (Hello) c.lookup("HelloServer");
Hello gestor = (Hello) registry.lookup(server);
log.debug("GestorColeta::executeRemote ==> Naming lookup... OK!!");
And i obtain the next:
12:52:42,472 DEBUG [uploadmanager] GestorColeta::executeRemote ==> Ya existe RMISecurityManager
12:52:42,488 DEBUG [uploadmanager] GestorColeta::executeRemote ==> Vinculos disponibles[0]:HelloServer
12:52:42,488 DEBUG [uploadmanager] GestorColeta::executeRemote ==> Naming lookup...
12:52:42,511 ERROR [uploadmanager] GestorColeta::GestorColeta: ==> rmi://10.95.18.121:1099/HelloServer
12:52:42,511 ERROR [uploadmanager] GestorColeta::GestorColeta: ==> java.rmi.NotBoundException
As you can see, i get the entries list from the registry... but i cannot lookup the HelloServer service. :-(
I tried to run the commented code: Hello gestor = (Hello) c.lookup("HelloServer"); but i had no good news:
13:56:16,949 DEBUG [uploadmanager] GestorColeta::executeRemote ==> Ya existe RMISecurityManager
13:56:16,967 DEBUG [uploadmanager] GestorColeta::executeRemote ==> Vinculos disponibles[0]:HelloServer
13:56:16,968 DEBUG [uploadmanager] GestorColeta::executeRemote ==> Naming lookup...
13:56:21,983 ERROR [uploadmanager] GestorColeta::GestorColeta: ==> Receive timed out
13:56:21,984 ERROR [uploadmanager] GestorColeta::GestorColeta: ==> javax.naming.CommunicationException
13:56:21,985 ERROR [uploadmanager] GestorColeta::GestorColeta: ==> java.net.SocketTimeoutException: Receive timed out
I changed the rmi.codebase.server in my JBoss run.sh: -Drmi.codebase.server.... (by default is http://10.95.18.121:8083/ ) but if i change this property all my EJBeans and Servlets fail
Reading the forums i could obtain the list of the rmi services on the server... And i knew that JBoss use JNDI instead RMI so I tried jnp:// instead of rmi://. Nothing.
This topic is very interesting http://www.jboss.org/index.html?module=bb&op=viewtopic&t=56265
anonymous wrote : Oh, your using the rmi registry Naming.list, not the jndi Context.list as I thought. JBoss does not implement an rmi registry. Use jndi.
so: how can I use JNDI to connect to a RMI server?
I am literally desesperated. Can anyone give me a ray of light? It will be really appreciated. :)
Thanks in advance.
Ana.
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4072999#4072999
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4072999
More information about the jboss-user
mailing list