Urgente RMI
Publicado por PXC (4 intervenciones) el 13/05/2009 18:49:07
Hola, somos un grupo de estudiantes que debemos entregar un proyecto y tenemos problemas con el RMI de java. A ver si alguien puede resolvernoslo.
Tenemos 3 classes el Hello, que es la interfaz, Server i Cliente, podeis encontrar-las las 3 mas abajo.
El caso es el siguiente:
Tenemos un servidor con un Linux instalado con la aplicacion Server i Hello. ejecutamos rmiregistry y java -classpath bin -Djava.rmi.server.codebase=file:bin/ example.hello.Server
Hasta aqui no hay problema, nos sale el mensaje de Server ready
El problema lo tenemos en la ejecución del cliente.
java -classpath bin -Djava.rmi.server.hostname=wwweather.no-ip.org example.hello.Client
Si os fijais en el codigo hay una instrucción para que nos liste todos los objetos del rmiregistry y nos aparece el Hello.
Si embargo quando realiza la llamada a la instruccion
respuesta=stub.sayHello();
nos da el siguiente error.
Client Exception: java.rmi.ConnectException: Connection refused to host:127.0.0.1; nested exception is:
java.net.ConnectionException: Connection refused: connect
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:601)
y continua.
aparece por alli en medio un
at $Proxy0.sayHello(Unknown Source)
at example.hello.Client.main(Client.java:56)
-----------------------------------
package example.hello;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface Hello extends Remote {
String sayHello() throws RemoteException;
}
-----------------------------------
package example.hello;
import java.rmi.registry.Registry;
import java.rmi.registry.LocateRegistry;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
public class Server implements Hello {
public Server() {}
public String sayHello() {
return "Hello, world!";
}
public static void main(String args[]) {
System.setProperty("java.security.policy","general.policy");
try {
Server obj = new Server();
Hello stub = (Hello) UnicastRemoteObject.exportObject(obj, 0);
// Bind the remote object's stub in the registry
Registry registry = LocateRegistry.getRegistry();
registry.bind("Hello", stub);
System.err.println("Server ready");
} catch (Exception e) {
System.err.println("Server exception: " + e.toString());
e.printStackTrace();
}
}
}
-------------------------------------------------------------------------
package example.hello;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
public class Client {
private Client() {}
public static void main(String[] args) {
System.setProperty("java.security.policy","general.policy");
System.setProperty("java.rmi.server.hostname","wwweather.no-ip.org");
String host = "wwweather.no-ip.org";
try {
Registry registry = LocateRegistry.getRegistry(host);
System.out.println(registry.list()[0]);
Hello stub = (Hello) registry.lookup("Hello");
String response = stub.sayHello();
System.out.println("response: " + response);
} catch (Exception e) {
System.err.println("Client exception: " + e.toString());
e.printStackTrace();
}
}
}
Tenemos 3 classes el Hello, que es la interfaz, Server i Cliente, podeis encontrar-las las 3 mas abajo.
El caso es el siguiente:
Tenemos un servidor con un Linux instalado con la aplicacion Server i Hello. ejecutamos rmiregistry y java -classpath bin -Djava.rmi.server.codebase=file:bin/ example.hello.Server
Hasta aqui no hay problema, nos sale el mensaje de Server ready
El problema lo tenemos en la ejecución del cliente.
java -classpath bin -Djava.rmi.server.hostname=wwweather.no-ip.org example.hello.Client
Si os fijais en el codigo hay una instrucción para que nos liste todos los objetos del rmiregistry y nos aparece el Hello.
Si embargo quando realiza la llamada a la instruccion
respuesta=stub.sayHello();
nos da el siguiente error.
Client Exception: java.rmi.ConnectException: Connection refused to host:127.0.0.1; nested exception is:
java.net.ConnectionException: Connection refused: connect
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:601)
y continua.
aparece por alli en medio un
at $Proxy0.sayHello(Unknown Source)
at example.hello.Client.main(Client.java:56)
-----------------------------------
package example.hello;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface Hello extends Remote {
String sayHello() throws RemoteException;
}
-----------------------------------
package example.hello;
import java.rmi.registry.Registry;
import java.rmi.registry.LocateRegistry;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
public class Server implements Hello {
public Server() {}
public String sayHello() {
return "Hello, world!";
}
public static void main(String args[]) {
System.setProperty("java.security.policy","general.policy");
try {
Server obj = new Server();
Hello stub = (Hello) UnicastRemoteObject.exportObject(obj, 0);
// Bind the remote object's stub in the registry
Registry registry = LocateRegistry.getRegistry();
registry.bind("Hello", stub);
System.err.println("Server ready");
} catch (Exception e) {
System.err.println("Server exception: " + e.toString());
e.printStackTrace();
}
}
}
-------------------------------------------------------------------------
package example.hello;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
public class Client {
private Client() {}
public static void main(String[] args) {
System.setProperty("java.security.policy","general.policy");
System.setProperty("java.rmi.server.hostname","wwweather.no-ip.org");
String host = "wwweather.no-ip.org";
try {
Registry registry = LocateRegistry.getRegistry(host);
System.out.println(registry.list()[0]);
Hello stub = (Hello) registry.lookup("Hello");
String response = stub.sayHello();
System.out.println("response: " + response);
} catch (Exception e) {
System.err.println("Client exception: " + e.toString());
e.printStackTrace();
}
}
}
Valora esta pregunta


0