Newsgroup: it.comp.java
Titolo: Errore con RMI

Salve sto creando un programma che usa RMI.
Praticamente il client deve inviare una classe all'oggetto RMI che
deve  calcolare un risultato utilizzando  i metodi di questa classe..
ho provato pero' trovo questo errore
java.rmi.UnmarshalException: error unmarshalling arguments; nested
exception is:
	java.lang.ClassNotFoundException: Somma (no security manager: RMI
class loader disabled)
	at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:
285)
	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)
Caused by: java.lang.ClassNotFoundException: Somma (no security
manager: RMI class loader disabled)
	at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:371)
	at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:165)
	at java.rmi.server.RMIClassLoader$2.loadClass(RMIClassLoader.java:
620)
	at java.rmi.server.RMIClassLoader.loadClass(RMIClassLoader.java:247)
	at
sun.rmi.server.MarshalInputStream.resolveClass(MarshalInputStream.java:
197)
	at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:
1538)
	at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:
1460)
	at java.io.ObjectInputStream.readClass(ObjectInputStream.java:1427)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1282)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:339)
	at sun.rmi.server.UnicastRef.unmarshalValue(UnicastRef.java:290)
	at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:
279)
	... 6 more
credo di aver fatto tutto nella norma pero'....
cosa sbaglierei?


Il prob e che rmiregistry non trova le tue classi
(ClassNotFoundException)
hai due possibilita'
1) fai partire RMIRegistry dalla dir che contiene le tue classi ( o la
die che contiene il loro primo package se stanno in un package)
2) metti la dir di cui sopra nel CLASSPATH

 2) metti la dir di cui sopra nel CLASSPATH
Ho provato a mettere la dir nel CLASSPATH.. ma non cambia niente...
per quanto riguarda l'RMIRegistry come dovrei fare a farlo partire
nella classe desiderata? Ho provato a copiare il file con lo stub in
ogni cartella per prova... ma non cambia niente... Sbaglio ancora?

 2) metti la dir di cui sopra nel CLASSPATH
Ho provato a mettere la dir nel CLASSPATH.. (ho provato a meterle
tutte) ma il risultata non cambia...
invece come dovrei fare per far partire RMIRegistry dalla dir che
contiene le classi...  perche' io lo creo con
                        RemoteInterface interf = (RemoteInterface)
UnicastRemoteObject.exportObject(ri, REGISTRYPORT);
			Registry reg = LocateRegistry.createRegistry(REGISTRYPORT);
sbaglio ancora?
Grazie

 2) metti la dir di cui sopra nel CLASSPATH
Ho provato a mettere le dir nel CLASSPATH (ce le ho messe tutte quelle
che contengono il progetto... ) ma il risultato non cambia...
per l'RMIRegistry io lo creo  cosi':
                Registry reg = null;
		RemoteInterface interf = null;
		interf = (RemoteInterface) UnicastRemoteObject.exportObject(ri,
REGISTRYPORT);
		reg = LocateRegistry.createRegistry(REGISTRYPORT);
		reg.rebind("oggetto",interf);
sbaglio ancora?