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.