25. april 2006 - 22:42Der er
8 kommentarer og 1 løsning
RMI og pakker
Hej
Kan det passe at RMI kun fungerer hvis RMI-klasserne befinder sig i samme pakkestruktur på server og klient. Hvis RMI-klasserne på serveren f.eks. befinder sig i pakken "server" og RMI-klasserne på klienten befinder sig i pakken "pakke" får jeg følgende exception:
java.lang.ClassCastException: HelloImpl_Stub at pakke.HelloClient.main(HelloClient.java:16)
Det virker lidt underligt da man jo sjældent har samme pakkestruktur på både server og klient
Håber nogen har et svar på dette problem, da jeg ikke går udfra jeg er den første der har oplevet dette :)
java.rmi.UnmarshalException: error unmarshalling return; nested exception is: java.lang.ClassNotFoundException: server.HelloImpl_Stub (no security manager: RMI class loader disabled) at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source) at pakke.HelloClient.main(HelloClient.java:16) Caused by: java.lang.ClassNotFoundException: server.HelloImpl_Stub (no security manager: RMI class loader disabled) at sun.rmi.server.LoaderHandler.loadClass(Unknown Source) at sun.rmi.server.LoaderHandler.loadClass(Unknown Source) at java.rmi.server.RMIClassLoader$2.loadClass(Unknown Source) at java.rmi.server.RMIClassLoader.loadClass(Unknown Source) at sun.rmi.server.MarshalInputStream.resolveClass(Unknown Source) at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source) at java.io.ObjectInputStream.readClassDesc(Unknown Source) at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) at java.io.ObjectInputStream.readObject0(Unknown Source) at java.io.ObjectInputStream.readObject(Unknown Source)
Jeg må indrømme at jeg godt kan se fordelen ved dynamic classloading, hvis man har mange clienter og man f.eks. laver en ændring i den klasse der står for implementeringen af det fælles interface's metoder. Det er jo denne klasse stubben bliver lavet udfra, og dermed ville en ændring i denne klasse jo kræve at man lavede en ny stub, som så skulle overføres manuelt til alle klienterne. Med Dynamic classloading sker denne overførsel jo automatisk. Men det er selvfølgelig klart at Dynamic classloading ikke løser problemmet hvis interfacet bliver ændret f.eks. ved tilføjelse af nye metoder.
:) jeg er enig i at RMI er bedst egnet til intranetbrug, hvilket jo selvfølgelig letter distribueringen af de ændrede filer...hvis ellers alle virksomhedens PC'ere er tilstede når dette sker :) Tak for snakken og hjælpen!
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.