2011-03-16 60 views
0

我遇到了一个问题,我的小程序。它应该采取一个网址并解析那里的html来构建一个图像。我已经得到它在我的eclipse调试器上工作。但是,当我尝试在Web浏览器上使用它时,我得到一个AccessControlException。我正在使用jEditorPane.setPage(url)方法。目前,applet和url都托管在我的本地主机上,并且我自己对applet进行了签名。Java安全AccessControlException在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) 

回答

0

的签名Applet只允许连接到它来自主机。甚至对于已签名的applet,在从不太可信的代码(如JavaScript代码)中调用的方法中,它只具有此代码的权限(更确切地说,是所有权利的交集)。

为了能够完成小程序拥有的所有权利,请将您的权限编码包含在AccessController.doPrivileged(...)中。 (但要确保在外部发出恶意论点时不会做危险的事情。)

+0

真棒,工作,谢谢。 – Acquire 2011-03-17 16:41:04