12. marts 2004 - 11:11Der er
18 kommentarer og 1 løsning
RMI og JBuilder.
Hej. Jeg har lavet et lille lommeregner-eksempel. Compiler og kører jge det fra en kommando-prompt virker det perfekt. Jeg laver først _skel og _stub, starter rmiregistry, starter så serveren og dernæst klienten. Dette virker fint. Den præcis samme kode har jeg så ville afvikle under JBuilder. Problemet er, at jeg får denne fejlmeddelelse når jeg forsøger at afvikle serveren. Jeg har generet _skel og _stub via JBuilder, men ved ikke hvad jeg mere skal gøre? ------fejlbesked fra JBuilder-------------- Remote fjerne exception: java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: java.lang.ClassNotFoundException: rmi.rmiServer_Stub --------------------------------------------
Hey Loadet. Så virker serveren, tusind tak. Jeg har dog fået et nyt problem. Jeg har et projekt til min server og et til klient. Jeg har kopieret _stub CLASS-filen fra serveren over i klienten(det har jeg fået at vide jeg skal gøre). Men når jeg kører klienten, så siger den fejl. Det ser ud som om, at den prøver at tilgå rmi.rmiServer_stub (rmi er packeche-name) i klienten hedder packeche rmiklient. (rmi.rmiServer_Stub (no security manager: RMI class loader disabled)) er fejlen jeg får?
hmm det ved jeg ikke jeg har ikke rodet så meget med security manager men hvis du har noget ligende dette i din kode System.setSecurityManager(new RMISecurityManager());
så skal du også køre med -Djava.security.policy=c:\path\to\client.policy
hvor der kunne stå i client.policy
grant { permission java.security.AllPermission; }; for at tillade alt
det jeg selv gør er at lave en client pakke og en server pakke i samme projekt
så finder den selv ud af det når du bare have lavet en import til den pakke hvor det interface du skal bruge ligger.
og når jeg laver en jar skal jeg bare sætte filter på så det kun er interface og stub der kommer med.
det er ikke så længe siden jeg selv begyndte at rode med rmi og jeg har brugt en del timer på at finde den rette fremgangs måde så der ikke kommer alle de dumme fejl. mit råd er at når du først har styr på at lave det uden security manager så kan du begynde at bruge den... for ellers ender det bare med at man kører sur i den ene fejl efter den anden.
men jeg vender tilbage i nat eller imorgen, nu skal jeg sove
Hej. Jeg har fjernet Security-Maneger fra koden, for netop at undgå problemer med alt for mange ukendte fejl. Jeg tror problemet skyldes, at jeg har copy/pate _stub filen fra serveren over i mappen hos klienten. Altså den fil der er genereret via JBuilder(tilsvarende rmic ....) til serveren. Som sagt er dette en fremgangsmode jeg er blevet tilrådet, for at det skal kunne køre. Det jeg tror den brokker sig over er så, at _stub-filen "hører" til den packache hvorri serveren ligger, men nu er den(altså kopien hos klienten) i den pachache til klienten.....tror det er det den ikke kan finde ud af. Mit problem er så "bare", at jeg ikke ved hvordan jeg skal fx. ændre _stub, henvise på en anden måde i stedet for at kopiere, lave en på serven der peger til klienten eller hvorledes.
Håber det gav et bedre billede af mine formodede problemer.
Hey Loadet. Så virker det endelig, perfekt. Nu sidder jege kun tilbage med et mindre problem. Jeg har kopieret _stub filen over til klienten(ligger den i classes mappen sammen med de andre .CLASS filer). Hvis jeg køre klienten så virker det fint, men så snart jeg ændre i koden, altså skal re-compile, da sletter den _stub-filen fra mappen, og laver jo så den sædvanelige fejl. En fra mit studie kører også med JBuilder, men har ikke samme problem(han kan sagtens ændre mv.). Har ikke kunne finde forskellen,
ja, når du rebuilder projektet vil den slette hele projekt mappen og generere filerne igen.. du skal ikke selv sidde og kopire noget, men gøre som jeg foreslog altså at lade det ligge i den project mappe som du importere fra.
Ja nu er det jo lidt siden, men syntes det var lidt i stil med dette indlæg..
hvordan kan man så sprede klienterne ud på andre maskiner??
jeg har prøvet at kopiere stub filen over samt selve klient filerne, ændret url til rigtig ip, prøvet at kopiere ServerInterface med over også.. men skidtet funger bare ikke.. jeg kunne forestille mig der var en rigtig nem metode hvorpå man kunne få det til at køre, any ideas?
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.