Avatar billede mora Nybegynder
18. juli 2003 - 00:31 Der er 13 kommentarer og
1 løsning

RMI : Observer

Jeg skal bruge et oberver system over rmi.

Indtil nu har jeg 6 klasser, men får en security advarsel når jeg kører det.

Af plads hensyn ligger filerne så de skal hentes, poster filerne med retterlser i dette spm tilsidst.

http://www.codebin.dk/rmiobserver/error.txt
http://www.codebin.dk/rmiobserver/Hello.java
http://www.codebin.dk/rmiobserver/HelloObserver.java
http://www.codebin.dk/rmiobserver/R_Observer.java
http://www.codebin.dk/rmiobserver/RemoteObservable.java
http://www.codebin.dk/rmiobserver/RemoteObserver.java
http://www.codebin.dk/rmiobserver/RmiHello.java
Avatar billede mora Nybegynder
18. juli 2003 - 00:32 #1
det er rmihello jeg kører (og hvor fejlen kommer)
Avatar billede olly Nybegynder
18. juli 2003 - 01:18 #2
Et vildt skud uden at have prøvet at compile dine ting...

Du har ikke en policy fil...

Prøv at lave en fil der hedder: simple.policy med følgende indhold

grant {
// Allow everything for now
permission java.security.AllPermission;
};

Og kør så cilent med: java -Djava.security.policy=simple.policy "Navn"

og server på samme måde.
Avatar billede olly Nybegynder
18. juli 2003 - 01:51 #3
Jeg har fået koden til at virke nu ved at compile dine stubs med:


rmic  -v1.2 HelloObserver
rmic  -v1.2 RmiHello

- Starte rmiregistry med

start rmiregistry

- og så kører server med:

java -Djava.security.policy=simple.policy RmiHello

- og så starte klient med:

java -Djava.security.policy=simple.policy HelloObserver

Skal siges jeg bruger batfiler til dette job... Hvis du vil have koden eller batfilerne så skriv det og så din mail...
Avatar billede mora Nybegynder
18. juli 2003 - 01:57 #4
X:\rmiobserver>java -Djava.security.policy=simple.policy -Djava.rmi.server.codeb
ase=file://x:\rmiobserver RmiHello
New RmiHello
binding
RmiHello err: access denied (java.io.FilePermission \rmiobserver read)
Avatar billede mora Nybegynder
18. juli 2003 - 01:58 #5
det var med olly´s kommentar
Avatar billede mora Nybegynder
18. juli 2003 - 02:03 #6
Får samme med dit svar...

mora@nospam.dk
Gider du sende bat filerne, og stub/skel


jeg får en anden fejl hvis jeg udelukker codebase

RmiHello err: RemoteException occurred in server thread; nested exception is:
        java.rmi.UnmarshalException: error unmarshalling arguments; nested exce
tion is:
        java.lang.ClassNotFoundException: RmiHello_Stub
java.rmi.ServerException: RemoteException occurred in server thread; nested exc
ption is:
Avatar billede arne_v Ekspert
18. juli 2003 - 07:50 #7
Den sidste fejl skyldes formentlig at Stub filerne ikke er i RMIregistry's
classpath. Det skal de.

så lav en lille RR.bat med:

set CLASSPATH=hvor-stub-filerne-nu-ligger
rmiregistry

og start den i.s.f. rmiregistry direkte.
Avatar billede arne_v Ekspert
18. juli 2003 - 08:37 #8
Jeg hentede koden.

Rettede nodename til localhost.

Og så virkede:

javac *.java
rmic HelloObserver
rmic RmiHello
start rmiregistry
start java RmiHello
pause
java HelloObserver
Avatar billede arne_v Ekspert
18. juli 2003 - 08:38 #9
Iøvrigt et upædagogisk eksempel da jeg også starter rmiregistry direkte
og "udnytter" at alt bliver kørt fra samme directory.

Men lav en RR med classpath og start den.
Avatar billede arne_v Ekspert
18. juli 2003 - 08:58 #10
Og efter at have fjernet udkommenteringen af security manageren:

javac *.java
rmic HelloObserver
rmic RmiHello
start rmiregistry
start java -Djava.security.policy=grantall.policy RmiHello
pause
java -Djava.security.policy=grantall.policy HelloObserver

(men med den policy er der ikke meget grund til at køre med security manager)
Avatar billede arne_v Ekspert
18. juli 2003 - 09:03 #11
Den her policy er lidt mer restriktiv:

grant {
    permission java.net.SocketPermission "localhost:1099", "connect,resolve";
    permission java.net.SocketPermission "localhost:1024-", "connect,accept,resolve";
};

(localhost skal naturligvis rettes til)
Avatar billede mora Nybegynder
18. juli 2003 - 12:58 #12
Så når jeg bruger registry i programmet, burde den ikke kræve stub filerne er i samme dir (pt. bruger jeg jo standalone).

arne_v svarer du lige ? syntes du har fortjent points´ne med et så grundigt svar :)
Avatar billede arne_v Ekspert
18. juli 2003 - 13:04 #13
Hvis du laver registry i selve server programmet med createRegistry, så
skal begge stub-filerne bare være i server programmets classpath.
Avatar billede arne_v Ekspert
18. juli 2003 - 13:04 #14
OK
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

IT-specialister til Forsvarets nye Digital Backbone - En unik mulighed

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Nye kolleger søges til IT Stab i Forsvaret

Capgemini Danmark A/S

SAP S/4HANA Finance Lead