Avatar billede tommer Nybegynder
04. marts 2002 - 15:36 Der er 7 kommentarer og
1 løsning

virker ikke i jdk1.3.1??

kan nogen forklare mig hvorffor dette ikke virker i jdk1.3.1

System.setSecurityManager(new RMIServerSecurityManager());
Avatar billede martinhrj Nybegynder
04. marts 2002 - 15:54 #1
Jeg skal ikke lige kunne sige hvorfor det specielle metodekald ikke virker, men det er flere gange blevet opdaget at JavaSun ikke er helt fremadkompatibelt. Dvs. selvom det virkede i en tidligere version, er det absolut ikke sikkert at det virker i de nye versioner.
Avatar billede carstenknudsen Nybegynder
04. marts 2002 - 16:08 #2
Du har ikke skrevet hvad der ikke virker: kan det ikke
kompilere, kaster det exceptions under kørsel?
Avatar billede tommer Nybegynder
04. marts 2002 - 17:27 #3
lidt nærmere forklaring:
uden den nævnte linie i spørgsmålet kører det fint.
med linien kan jeg stadig kompilere uden problemer, men får ved runtime en "java.security.AccessControlException" ???
Avatar billede logical Nybegynder
04. marts 2002 - 17:39 #4
Du mangler vel en ordentlig security policy, hvis du skal køre med en RMIServerSecurityManager.

Brug f.eks.
grant
{
  permission java.net.SocketPermission "*:1024-65535", "connect, accept";

};
Avatar billede tommer Nybegynder
04. marts 2002 - 19:45 #5
til logical. jeg fatter overhovedet ikke det du skriver, det ligner ikke java kode ???
Avatar billede logical Nybegynder
05. marts 2002 - 10:52 #6
Godt.

Når du starter et java program har den et set af permissions, som beskriver hvad den må. En almindelig applikation må alt, mens f.eks. en applet er stærkt begrænset.

Inden en række metoder bliver kaldt, kontrolleres dette hos en security manager, som er installeret pr. default (Det gør den, som starter java programmet).

Når du skal køre RMI bør serveren ikke bare kunne udføre alt kode. For tænk nu hvis den får overført et serialiseret object med "format c:" inde i..!!

I gamle dage (1.2) var problemet ikke løst helt, men nu om dage, er det meget specifikt. Du starter op med at kalde System.setSecurityManager(new RMIServerSecurityManager()). Altså installerer en ny security manager. Denne manager gør at næsten ingenting kan lade sig gøre (Og derved ligner den jo en applets sandbox).

Faktisk kan den ikke engang køre rmi, fordi den ikke må accepte connections fra nogle porte over hovedet :-)

Altså skal du have defineret de muligheder, som din server må (Beskrive security policies) og fortælle dit program, at disse policies er gældende.

At beskrive policies gøres i formen, som jeg skriver ovenover. Ja, det ligner ikke javakode :-)

Det ovenstående linie gør er at tillade at en java.net.ServerSocket kan kalde accept metoden (hvis den bruger en port mellem 1024 og 65535), og iøvrigt tillade indgående connections fra denne accept metode.

I din java documentations bundle er der mere information om disse rettigheder.

Men for dit vedkommende...

Lav en fil (f.eks. server.policy), med det indhold, jeg beskriver (Husk alle semikoloner).
Og når du starter din server:
java -Djava.security.policy=server.policy org.tommer.rmi.Server

Det skulle gøre det.
Avatar billede tommer Nybegynder
05. marts 2002 - 19:48 #7
tak for den fine forklaring. det er netop en applet jeg har gang i, det mærkelige er bare at det virker med tidligere versioner af JDK.
jeg vil lege lidt videre med problemet hej hej.
Avatar billede tommer Nybegynder
10. marts 2002 - 13:42 #8
til logical. øv øv jeg ved sgu ikke hvad jeg gør forkert, selv mad en security fil kan jeg ikke få noget som helst til at virke :-(
jeg har prøvet at få en short course opgave på sun hjemmeside til at køre det lykkedes heller ikke men hvorffor? link her:
http://developer.java.sun.com/developer/onlineTraining/rmi/exercises/BootstrapExample/index.html
hvis du har tid/overskud til at kigge på det kan du evt få flere point. hvis ikke så er det 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