2011-03-16 6 views
0

Je rencontre un problème avec mon applet. Il est supposé prendre une URL et analyser le HTML pour construire une image. Je l'ai eu pour travailler sur mon débogueur éclipse. Cependant, lorsque j'essaie de l'utiliser sur un navigateur Web, j'obtiens une AccessControlException. J'utilise la méthode jEditorPane.setPage (url). Actuellement, l'applet et l'URL sont hébergés sur mon hôte local et j'ai auto-signé l'applet. Un applet non signé est seulement autorisé à se connecter à l'hôte d'où il provient.Java Security AccessControlException dans l'applet

java.lang.RuntimeException: java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:80 connect,resolve) 
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source) 
    at sun.net.www.protocol.http.HttpURLConnection.getHeaderField(Unknown Source) 
    at java.net.HttpURLConnection.getResponseCode(Unknown Source) 
    at javax.swing.JEditorPane.getStream(Unknown Source) 
    at javax.swing.JEditorPane.setPage(Unknown Source) 
    at javax.swing.JEditorPane.setPage(Unknown Source) 
    at com.mindbody.printer.PrinterApplet.print(PrinterApplet.java:24) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at sun.plugin.javascript.JSInvoke.invoke(Unknown Source) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at sun.plugin.javascript.JSClassLoader.invoke(Unknown Source) 
    at sun.plugin2.liveconnect.JavaClass$MethodInfo.invoke(Unknown Source) 
    at sun.plugin2.liveconnect.JavaClass$MemberBundle.invoke(Unknown Source) 
    at sun.plugin2.liveconnect.JavaClass.invoke0(Unknown Source) 
    at sun.plugin2.liveconnect.JavaClass.invoke(Unknown Source) 
    at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$DefaultInvocationDelegate.invoke(Unknown Source) 
    at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$3.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo.doObjectOp(Unknown Source) 
    at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$LiveConnectWorker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 

Répondre

0

Et même pour les applets signées, dans les méthodes invoquées à partir de code moins fiable (comme le code javascript ici), il n'a que les droits de ce code (ou plus exactement, l'intersection de tous les droits).

Pour pouvoir faire tout ce dont votre applet a les droits, enveloppez votre code nécessitant des droits avec AccessController.doPrivileged(...). (Mais assurez-vous que cela ne peut pas faire des choses dangereuses quand on vous donne des arguments malveillants de l'extérieur.)

+0

Génial qui a fonctionné, merci. – Acquire

Questions connexes