24. september 2002 - 13:09Der er
29 kommentarer og 2 løsninger
RMI
Når jeg prøver at lave en rmI server får jeg hele tiden denne fejl, og "127.0.0.1" er localhost har også prøve med både min interne og externe ip, men det virker ikke, og min firewall er slået fra såå ? Er der noget specielt jeg skal huske når jeg vil have denne server til at køre Add. har brugt java tutorial, såå det skulle gerne være korrekt det jeg har lavet :) exception: access denied (java.net.SocketPermission 127.0.0.1:1099 connect,resolve)
ja det er kompileret og jeg har smidt policy filen ind ind i det bib serveren ligger i, og så skal jeg ifølge tutorialen starte rmiregisty det kan jeg ikke. add. er lige væk nogle timer, så der kan jeg ikke afprøve jeres svar.
Min version virker fint: Serveren siger: ComputeEngine bound. Jeg har benyttet en standard policy-fil(som olly's).
Jeg har lavet et par .bat-filer:
Rmi.bat cd C:\new\ set path=c:\j2sdk1.4.0\bin;%path% rmic -v1.2 -classpath C:\new ComputeEngine pause
Server.bat set classpath=C:\new\;%classpath% set path=c:\j2sdk1.4.0\bin;%path% start rmiregistry cd C:\new\ java -Djava.security.policy=simple.policy ComputeEngine
Al min kode ligger i c:\new og jeg har SDK installeret i c:\j2sdk.1.4.0
hey nu virker det ??? ok, spøjst nå men jeg takker mange gange og synes i begge fortjener point, så hvis du olly kommer med et svar, så ligger jeg point i så I begge får 15 point .)
hvis jeg i min server app. nu har en pakke med nogle klasser/objekter, hvor der i klasserne selvfølgelig er metoder til de forskellige objekter, og jeg så sender dette objekt med over til min klient app. hvordan kan jeg så uden at importere denne pakke bruge nogle af objektetes metoder ?? for hvis alle metoder ligger i det interface der bliver brugt både at klienten og serveren så er der vel ikke så meget objektorienteret tilbage?? Eller??
Er ikke helt sikker på at jeg er med ;) Vi du sende obj. fra serveren over til klienten? Dit interface definerer, hvilke metoder klienten kan kallde på serveren(altså hvad der skal registreres i rmi-registry, som er opbygget lidt a la dns nameserverne). Du kan godt have forskellige interfaces på henholdsvis klient og server, og serveren kan også godt kalde metoder på klienten - det bliver f.eks. brugt i Observer pattern. Dette er faktisk et brud på den klassiske client/server arkitektur. Men var det nu det du mente?
Njaa jeg kan lige prøve at forklare det lidt mere præcist. I min server der henter jeg en masse input ind fra en database, og smider den i nogle "bruger" objekter, hvor der er nogle metoder til f.eks. hent String name, hent int alder osv., men da den klasse disse objekter er instantieret fra ligger på serveren, og da jeg bare sender objekter f.ek. anders med over til klienten, så kan jeg ikke lige se hvordan jeg kan kalde metoden f.eks. "anders.getName()"; fra objektet?. Da jeg som du nok kan gætte er heeelt ny til RMI så ved jeg ikke så meget omkring opbygningen her så jeg ved ikke hvordan dette gøres mest korrekt
Ok. På serveren opretter du f.eks. et bruger objekt ved navn x, som du fodre med oplysninger fra db. Dette implementerer naturligvis interfacet Serializable. På klienten vil du godt kunne kalde fx. x.getName() selvom objektet er skabt på serveren..Dette håndterer Java og rmi for dig vha at du definerer getName() i dit interface.
Bestemt en unfair point deling... Giv mig 10 og magoo20000 20... Han fortjener mest for at komme med koden *S* Havde ikke lige Java på den maskine jeg var ved før!
hmmm ok, men hvordan skal det så defineres i mit interface, kan du komme med et eksempel på hvordan denne metode implementeres i interfacet, skal nok smide nogle flere point i til dig, når engang jeg får dette banket ind :)
kanon, I får lige nogle point nu, det skal helst ikke glemmes :)
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.