# java.security.AccessControlException



## Paladin (11. Nov 2004)

Hi,

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)*

```
...
              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)*

```
... 
         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)*

```
...
            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?

Vielen Dank im voraus


Paladin

[/code]


----------



## foobar (12. Nov 2004)

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:

```
grant codeBase "file:/pfad/myApplication.jar" {
  java.io.FilePermission " http:\Homepagename\Downloadverzeichnis", "read";
};
```


----------



## Bleiglanz (12. Nov 2004)

du musst das Applet signieren (du kannst ja nicht auf jedem Client so eine Policy anlegen)


----------



## Paladin (12. Nov 2004)

Hi,

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   

Gruß

Paladin


----------



## Bleiglanz (12. Nov 2004)

die policy hilft dir am server nichts, weil das Applet ja in einer JVM des Clients abläuft und deshalb....(denk mal drüber nach)

http://www.abim.net/jsw/


----------



## Paladin (12. Nov 2004)

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?

Gruß

Paladin


----------



## Bleiglanz (12. Nov 2004)

>> User leserechte auf meinem Downloadverzeichnis

wozu, mach halt einen link <a href=...

>>Oder ist ein Applet für eine solche Aktion 
>>absolut ungeeignet und
>>ich muss das ganze Ding in php schreiben? 

kennst du überhaupt den unterschied zwischen einem Applet und PHP/JSP/ASP usw.?


----------



## Paladin (12. Nov 2004)

> kennst du überhaupt den unterschied zwischen einem Applet und PHP/JSP/ASP usw.?



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.

Gruß

Paladin


----------

