Hallo liebe Freunde der Entwicklung!
Ich habe folgendes Problem:
Ich möchte meine Webstart-Anwendung so erweitern, das es möglich ist lokale JARs als Plugin einzubinden.
Das Ganze mache mit dem dem URLClassLoader.
Klappt als Standalone-App (also NICHT via Webstart) auch problemslos.
Als Webstart-App allerdings bekomme ich eine *access denied exception*, sobald das lokale JAR irgendwelche Security-Relevanten Dinge tut (z.B Systemvariablen auslesen).
Die liegt mit Sicherheit am Security-Context und der JNLP-Datei.
Die JNLP-Datzei kennt das Plugin/JAR nicht und dementsprechend hat:
keine Wirkung bei dieser JAR.
Kennt jemand eine Möglichkeit, wie ich dieses lokale JAR dem SecurtiyManager-Context hinzufügen kann?
Ich dachte da an etwas wie:
Aber leider hatte ich bisher keinen Erfolg, da das Interface (für mich) nicht genügend dokumentiert ist.
Die AccessDenied exception bleibt.
In der AppPolicy.java habe ich folgendes gefunden:
Es sieht so aus, wenn eine JAR nicht in der JNLP steht, bekommt diese nur SANDBOX-SECURTIY.
Meine Frage nun: Wie kann ich das ändern?
Ich habe folgendes Problem:
Ich möchte meine Webstart-Anwendung so erweitern, das es möglich ist lokale JARs als Plugin einzubinden.
Das Ganze mache mit dem dem URLClassLoader.
Klappt als Standalone-App (also NICHT via Webstart) auch problemslos.
Als Webstart-App allerdings bekomme ich eine *access denied exception*, sobald das lokale JAR irgendwelche Security-Relevanten Dinge tut (z.B Systemvariablen auslesen).
Die liegt mit Sicherheit am Security-Context und der JNLP-Datei.
Die JNLP-Datzei kennt das Plugin/JAR nicht und dementsprechend hat:
Code:
<security>
<all-permissions/>
</security>
Kennt jemand eine Möglichkeit, wie ich dieses lokale JAR dem SecurtiyManager-Context hinzufügen kann?
Ich dachte da an etwas wie:
Code:
com.sun.javaws.security.AppPolicy.getInstance().addPermissions()
oder
JNLPClassLoaderUtil.getInstance().addResource
Aber leider hatte ich bisher keinen Erfolg, da das Interface (für mich) nicht genügend dokumentiert ist.
Die AccessDenied exception bleibt.
In der AppPolicy.java habe ich folgendes gefunden:
Java:
// Get LaunchDesc for for the JARDesc.
LaunchDesc ld = null;
int access = LaunchDesc.SANDBOX_SECURITY;
boolean trusted = false;
// jd will not have parent if it was not in jnlp file
if (jd.getParent() != null) {
ld = jd.getParent().getParent();
access = ld.getSecurityModel();
}
Es sieht so aus, wenn eine JAR nicht in der JNLP steht, bekommt diese nur SANDBOX-SECURTIY.
Meine Frage nun: Wie kann ich das ändern?