ich bastele gerade an meiner eigenen Homepage und möchte im Downloadbereich
gerne einen Filebrowser haben der automatisch das Downloadverzeichnis auf dem
Server ausliest und auf den Schirm bringt.
Einen Java-Beispielcode der so etwas macht habe ich auch schon gefunden und
ihn so modifiziert, dass er als Applet läuft. In der Eclipse Umgebung funktioniert
das ganze auch wunderbar nur sobald ich es auf die Homepage hochlade funktioniert
das Applet nicht mehr.
In der Java Konsole wird folgendes angezeigt: java.security.AccessControlException: access denied
(java.io.FilePermission http:\Homepagename\Downloadverzeichnis read)
Der Text in der Konsole verweist auf drei Stellen im Sourcecode an denen der Fehler
aufgetreten ist:
at fb$FileTreeNode.readTree(fb.java:129)
at fb.buildTree(fb.java:82)
at fb.init(fb.java:30)
fb$FileTreeNode.readTree(fb.java:129)
Code:
...
String list[] = getFileObject().list();
if(list!= null) { //Zeile 129. Hier tritt einer der Fehler auf.
for(int i=0; i<list.length;i++) {
FileTreeNode subnode = new FileTreeNode(new File(getFileObject(),
list[i]));
add(subnode);
if(b)
subnode.readTree(b);
...
fb.buildTree(fb.java:82)
Code:
...
public TreeNode buildTree(String dir) {
FileTreeNode root = new FileTreeNode(new File(dir));
root.readTree(false);
return (TreeNode)root; //Zeile 82
}
...
fb.init(fb.java:30)
Code:
...
addNotify();
setSize(getInsets().left + getInsets().right + 300,
getInsets().top + getInsets().bottom + 367);
FileTreeNode root = (FileTreeNode)buildTree(dir);
DefaultTreeModel treemodel = new DefaultTreeModel(root); //Zeile 30
JTree tree = new JTree(treemodel);
tree.setDoubleBuffered(true);
...
Kann mir vielleicht jemand sagen ob und wie ich das Problem umgehen kann?
Du mußt auf dem Client eine Policy anlegen und dort bestimmte Rechte vergeben. Die Policy muß den Namen .java.policy tragen und im Homeverzeichnis des entsprechenden Benutzers liegen. Das File sollte ungefähr so aussehen:
Code:
grant codeBase "file:/pfad/myApplication.jar" {
java.io.FilePermission " http:\Homepagename\Downloadverzeichnis", "read";
};
vielen dank an foobar und Bleiglanz für eure Antworten.
Kann ich einfach auf meinen Server diese Policy Datei hochladen und dann funktioniert das ganze?
Und wenn nicht: wie signiert man ein Applet
Ok, das Problem ist also, dass wenn ich mich im Source Code auf das lokale Verzeichnis beziehe wird damit nicht das lokale Verzeichnis des Servers sondern das des Clients gelesen.
Gibt es eine Möglichkeit dem User leserechte auf meinem Downloadverzeichnis einzurichten damit das Applet die Verzeichnisstruktur lesen kann und wenn ja wie gefährlich wär so etwas?
Oder ist ein Applet für eine solche Aktion absolut ungeeignet und ich muss das ganze Ding in php schreiben?
zwischen einem Applet und PHP ja, zwischen einem Applet und JSP/ASP nein.
Aber wenn ich mein Problem halbwegs elegant mit JSP/ASP lösen kann, kann ich mir nicht
vorstellen, dass es lange dauern wird sich dort einzuarbeiten.