RuntimePermission und Javascript

  • Themenstarter Themenstarter JensRa
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
J

JensRa

Gast
Hallo großes Board,

ich hätte da gerne ein 'kleines' Problem....(gelösst)

Eine Java-Applet läuft wunderbar im Browser, wenn das böse JS nicht wär.
(Das Java-Programm dient als Schnittstelle zwischen JS-Client und Socket-Server... Falls ein Client kein Adobe Flash verwendet, dient Es als Alternative, aber dass nur am Rande.)

Der Zugriff von JavaScript aus auf eine Funktion mit Variablenrückübergabe funktioniert bestens:
HTML>alert(document.Javaapplet.GetVariable("sBigData"));<HTML
Code:
    public String sBigData="testdaten";
    ...
    public String GetVariable(String sWert){
        if(sWert.equals("sBigData")){
            return sBigData;
        }else{
            return null;
        }
    }

Was nun nicht laufen will, ist das Verändern einer beliebigen Variable über eine Funktion:
HTML>document.Javaapplet.SetVariable("sServer","java-forum.org");<HTML
Code:
    public String sServer="";
    ...
    public void SetVariable(String sName,String sWert){
//Hier getestete Rückgabe an JS=OK .... folgendes will aber nicht:
        if(sName.equals("sData")){
            sData=sWert;
        }else if(sName.equals("sServer")){
            sServer=sWert;
        }else if(sName.equals("lPort")){
            lPort=Integer.getInteger(sWert);
        }else if(sName.equals("bDoConnect")){
            bDoConnect=Integer.getInteger(sWert);
        }
    }
Hierbei erhalte ich eine Wunderbare Exception:
java.security.AccessControlException: access denied (java.util.PropertyPermission 1 read)

Also das Lesen der Java-Variablen ist kein Problem, nur das setzten Dieser. :cry:
Wie kann ich die Berechtigung (Permission/Runtimepermission?) im JAVA-Applet setzten, so dass per JS Variablen (in der Funktion SetVariable) verändert werden dürfen?
( Ich weiß nichtmal, wie die Permission heißt, die verändert werden muss. ;( .... nur das sie auch "write" haben muss.)
Irgendwie hab ich's nicht so mit Permissions.

Habe schon zu viel nach einer Lösung gesucht, die für einen Profi wahscheinlich ein klacks ist.
Den Herrn Google habe ich heute auch schon den ganzen Tag besucht und dieverse Foren mit falschen Suchbegriffen belässtigt. Mir tun schon die :autsch: weh.

(Hier verwende ich eine aktuelle Sun-JRE auf eine MS-XP-System+Diverse Browser.)

MfG
JensR
 
JensRa hat gesagt.:
...
Wie kann ich die Berechtigung (Permission/Runtimepermission?) im JAVA-Applet setzten, so dass per JS Variablen (in der Funktion SetVariable) verändert werden dürfen?
( Ich weiß nichtmal, wie die Permission heißt, die verändert werden muss. ;( .... nur das sie auch "write" haben muss.)
Irgendwie hab ich's nicht so mit Permissions.
...

Kannst du gar nicht. Wenn dein Applet in einem Browser ausgeführt wird, dann wird das automatisch mit aktiviertem SecurityManager gestartet. Und dieser ist normal so konfiguriert, dass du nur eine minimale Menge von Berechtigungen hast, d.h. du wirst von deinem Applet z.B. nie etwas in das Dateisystem des Benutzers schreiben können.
Du hast IMHO eigentlich nur 2 Möglichkeiten:
a) Du schreibst dein Applet so, dass niemals auf schützenswerte Ressourcen zugegriffen werden muss (z.B. Dateien, Umgebungsvariablen(=Properties), Sockets, etc...)
b) Du signierst dein Applet mit einem eigenen Zertifikat. Wenn der Endbenutzer deinem Zertifikat dann vertraut, dann kannst du oben erwähnte Dinge tun. Wie das geht -> Google, Sun-HP oder auch einfach nochmal hier fragen 😉
 
Hallo,

habe den *Fehler* gefunden. Naja kommt man als Anfänger nicht drauf.

Die globale Variable 'sBigData' wurde von einem Thread auf irgend einer Art blockiert?!.
Dadurch kam die obig genannte Exception raus, mit der ich 0 anfangen konnte.
...Nun läuft mein kleiner Socket-Tunneler wunderbar auf'm Webserver. 😀


PS: Ich will/ wollte ja keine Systemvariablen verändern, sondern nur globale Java-Interne.

Trotzdem... thx 4 really fast support.

MfG
JensR
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben