Ajouter un commentaire

nasix
Problème RMI : Invalid remote object

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.

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
 Y   Y  BBBB   U   U  U   U  RRRR  
Y Y B B U U U U R R
Y BBBB U U U U RRRR
Y B B U U U U R R
Y BBBB UUU UUU R RR