[GWT] Impossible d'accéder à un fichier du disque
Bonjour a tous !
J'ai un problème GWT (quelle surprise). En fait je voudrai pour lister les sous-dossiers d'un dossier (coté serveur) via un appel asynchrone.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
List<BaseTreeModel> lesDossiers = new LinkedList<BaseTreeModel>();
for(File f : new File(father.<String> get("_Path")).listFiles()){
if(f.isDirectory()){
BaseTreeModel child = new BaseTreeModel();
Integer profondeur = father.<Integer> get("_Profondeur") + 1;
child.set("_Profondeur", profondeur);
child.set("_Name", f.getName());
child.set("_Path", f.getAbsolutePath());
lesDossiers.add(child);
}
} |
Le code est bon je pense.
En Java j2SE je récupère bien les sous dossiers.
Mais là j'ai :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
GRAVE: Une exception ou une erreur s''est produite dans le conteneur durant le traitement de la requête
java.security.AccessControlException: access denied (java.lang.RuntimePermission setContextClassLoader)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
at java.security.AccessController.checkPermission(AccessController.java:546)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
at java.lang.Thread.setContextClassLoader(Thread.java:1394)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:190)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:550)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:380)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:243)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:288)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662) |
J'ai également essayé ça (sans succès bien sur)
Code:
1 2
|
System.setSecurityManager(new AccesDisque(father.<String> get("_Path"))); |
avec accesDisque.java
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
import java.io.FilePermission;
public class AccesDisque extends SecurityManager{
private String debutPath;
public AccesDisque(String s){
debutPath = s;
}
public void checkPermission(FilePermission perm){}
public void checkRead(String filename) {
if(filename.startsWith(debutPath)){
FilePermission perm = new FilePermission(filename, "read");
checkPermission(perm);
}
}
} |
Si quelqu'un a une idée je suis preneur.
Merci d'avance