Hello,
J'essaie de mettre un objet remote dans le registre (pour l'utiliser à distance) et ça ne marche pas :
Voici mon Interface Remote :
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.Date;
public interface DateInterface extends Remote {
Date getDate() throws RemoteException;
}
Voici ma classe d'implémentation :
import java.io.Serializable;
import java.rmi.RemoteException;
import java.rmi.server.RemoteObject;
import java.util.Date;
public class DateImp extends RemoteObject implements DateInterface, Serializable {
public Date getDate() throws RemoteException {
return new Date();
}
}
Je compile cette classe manuellement via javac, puis je génère le stub via rmic.
Juste après je lance mon registre via registry (ou en tâche de fond : start registry).
Par la suite je lance mon serveur :
import java.rmi.Naming;
public class ServerMain {
public static void main(String []args) {
DateImp dt = new DateImp();
try {
Naming.bind("rmi://localhost:1099/dtService", dt);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Ceci lève l'exception suivante :
java.rmi.MarshalException: error marshalling arguments; nested exception is: java.rmi.MarshalException: Invalid remote object at sun.rmi.registry.RegistryImpl_Stub.bind(Unknown Source) at java.rmi.Naming.bind(Naming.java:111) at ServerMain.main(ServerMain.java:8) Caused by: java.rmi.MarshalException: Invalid remote object at java.rmi.server.RemoteObject.writeObject(RemoteObject.java:347) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:917) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1339) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:302) ... 3 more
Merci d'avance pour toute aide ou indication.

