Hi!
I'm a newbe with rmi, and I try to use a test program, from Thinking in Java:
ITiempoPerfecto.java
package c15.rmi;
import java.rmi.*;
interface ITiempoPerfecto extends Remote {
long obtenerTiempoPerfecto() throws RemoteException;
}
TiempoPerfecto.java
package c15.rmi;
import java.rmi.*;
import java.rmi.server.*;
import java.rmi.registry.*;
import java.net.*;
public class TiempoPerfecto extends UnicastRemoteObject implements ITiempoPerfecto {
public long obtenerTiempoPerfecto () throws RemoteException {
return System.currentTimeMillis();
}
public TiempoPerfecto() throws RemoteException {
super();
}
public static void main(String[] args) throws Exception {
System.setSecurityManager(new RMISecurityManager());
TiempoPerfecto tp=new TiempoPerfecto();
Naming.bind("//localhost/TiempoPerfecto",tp);
System.out.println("Preparado para dar la hora");
}
}
and
MostrarTiempoPerfecto.java
package c15.rmi;
import java.rmi.*;
import java.rmi.registry.*;
public class MostrarTiempoPerfecto {
public static void main(String[] args) throws Exception {
System.setSecurityManager( new RMISecurityManager());
ITiempoPerfecto t=(ITiempoPerfecto)Naming.lookup("//localhost/TiempoPerfecto");
for (int i=0;i<10;i++)
System.out.println("Tiempo perfecto: "+t.obtenerTiempoPerfecto());
}
}
I compile all the files normally.
Later I do:
rmiregistry &
rmic c15.rmi.TiempoPerfecto
(This only generate the file
TiempoPerfecto_Stub.class, it's ok?)
Without warnings or errors. But when I try to create a server object
java c15/rmi/TiempoPerfecto
I obtain this:
Exception in thread "main" java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: c15.rmi.TiempoPerfecto_Stub
at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:385)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:240)
at sun.rmi.transport.Transport$1.run(Transport.java:153)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701)
at java.lang.Thread.run(Thread.java:595)
.......
What is the mistake? What may I do to run this programs?
Thank you!