为什么我的小程序获得java.security.AccessControlException:访问被拒绝(java.net.SocketPermission ...),我怎么能避免呢? [英] Why does my applet get a java.security.AccessControlException: access denied (java.net.SocketPermission ...), and how can I avoid it?

查看:135
本文介绍了为什么我的小程序获得java.security.AccessControlException:访问被拒绝(java.net.SocketPermission ...),我怎么能避免呢?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们无能,为什么我的客户端遇到在Safari一个Java安全异常。谁能帮助?

在Safari可靠地发生在Windows的异常。这涉及到一个Java小程序。唯一的例外也会发生与Firefox和IE8在Windows Vista上。

下面是重现步骤:


  1. 打开Windows上的Safari


  2. 点击这里:<一href=\"http://www.cengraving.com/s/item?itemId=CH003\">http://www.cengraving.com/s/item?itemId=CH003


  3. 点击自定义(在屏幕底部)


  4. 即时证明页面加载后,单击添加到购物车。


完整堆栈跟踪:

  java.security.AccessControlException:访问被拒绝(java.net.SocketPermission www.cengraving.com解析)
    在java.security.AccessControlContext.checkPermission(来源不明)
    在java.security.AccessController.checkPermission(来源不明)
    在java.lang.SecurityManager.checkPermission(来源不明)
    在java.lang.SecurityManager.checkConnect(来源不明)
    在sun.plugin.security.ActivatorSecurityManager.checkConnect(来源不明)
    在java.net.InetAddress.getAllByName0(来源不明)
    在java.net.InetAddress.getAllByName(来源不明)
    在java.net.InetAddress.getAllByName(来源不明)
    在java.net.InetAddress.getByName(来源不明)
    在sun.net.www.http.HttpClient.New(来源不明)
    在sun.net.www.http.HttpClient.New(来源不明)
    在sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(来源不明)
    在sun.net.www.protocol.http.HttpURLConnection.plainConnect(来源不明)
    在sun.net.www.protocol.http.HttpURLConnection.connect(来源不明)
    在sun.net.www.protocol.http.HttpURLConnection.getOutputStream(来源不明)
    在com.designapplet.a.f.a(来源不明)
    在com.designapplet.ui.c.a(来源不明)
    在com.designapplet.ui.c.for(来源不明)
    在com.designapplet.ui.DesignApplet.buy(来源不明)
    在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
    在sun.reflect.NativeMethodAccessorImpl.invoke(来源不明)
    在sun.reflect.DelegatingMethodAccessorImpl.invoke(来源不明)
    在java.lang.reflect.Method.invoke(来源不明)
    在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
    在sun.reflect.NativeMethodAccessorImpl.invoke(来源不明)
    在sun.reflect.DelegatingMethodAccessorImpl.invoke(来源不明)
    在java.lang.reflect.Method.invoke(来源不明)
    在sun.plugin.javascript.JSInvoke.invoke(来源不明)
    在sun.reflect.GeneratedMethodAccessor2.invoke(来源不明)
    在sun.reflect.DelegatingMethodAccessorImpl.invoke(来源不明)
    在java.lang.reflect.Method.invoke(来源不明)
    在sun.plugin.javascript.JSClassLoader.invoke(来源不明)
    在sun.plugin.liveconnect.PrivilegedCallMethodAction.run(来源不明)
    在java.security.AccessController.doPrivileged(本机方法)
    在sun.plugin.liveconnect.SecureInvocation $ 2.run(来源不明)
    在java.security.AccessController.doPrivileged(本机方法)
    在sun.plugin.liveconnect.SecureInvocation.CallMethod(来源不明)
java.net.MalformedURLException:没有协议:
    在与的java.net.URL下。INIT&GT;(未知来源)
    在与的java.net.URL下。INIT&GT;(未知来源)
    在与的java.net.URL下。INIT&GT;(未知来源)
    在sun.plugin.liveconnect.SecureInvocation.checkLiveConnectCaller(来源不明)
    在sun.plugin.liveconnect.SecureInvocation.access $ 000(来源不明)
    在sun.plugin.liveconnect.SecureInvocation $ 2.run(来源不明)
    在java.security.AccessController.doPrivileged(本机方法)
    在sun.plugin.liveconnect.SecureInvocation.CallMethod(来源不明)
java.net.MalformedURLException:没有协议:
    在与的java.net.URL下。INIT&GT;(未知来源)
    在与的java.net.URL下。INIT&GT;(未知来源)
    在与的java.net.URL下。INIT&GT;(未知来源)
    在sun.plugin.liveconnect.SecureInvocation.checkLiveConnectCaller(来源不明)
    在sun.plugin.liveconnect.SecureInvocation.access $ 000(来源不明)
    在sun.plugin.liveconnect.SecureInvocation $ 2.run(来源不明)
    在java.security.AccessController.doPrivileged(本机方法)
    在sun.plugin.liveconnect.SecureInvocation.CallMethod(来源不明)


解决方案

感谢您的答复。我没奖的奖金,因为虽然答案都是有益的,没有相当的问题解决了。

最后,我通过从applet传递数据到网页,然后执行AJAX调用与服务器进行通信的问题解决了。不是最优雅的解决方案,当然,但它已被证明是有效迄今。

试试吧,还是让我和知道它是否适合你。

再次感谢!

We are clueless about why my client is encountering a Java Security exception in Safari. Could anyone help?

The exception occurs reliably in Safari on Windows. This involves a Java applet. The exception also occurs with Firefox and IE8 on Windows Vista.

Here are the steps to reproduce:

  1. Open Safari on Windows

  2. Click here: http://www.cengraving.com/s/item?itemId=CH003

  3. Click "Customize" (at bottom of screen)

  4. After the "Instant Proof" page loads, click "Add to cart."

Full stack trace:

java.security.AccessControlException: access denied (java.net.SocketPermission www.cengraving.com resolve)
    at java.security.AccessControlContext.checkPermission(Unknown Source)
    at java.security.AccessController.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkConnect(Unknown Source)
    at sun.plugin.security.ActivatorSecurityManager.checkConnect(Unknown Source)
    at java.net.InetAddress.getAllByName0(Unknown Source)
    at java.net.InetAddress.getAllByName(Unknown Source)
    at java.net.InetAddress.getAllByName(Unknown Source)
    at java.net.InetAddress.getByName(Unknown Source)
    at sun.net.www.http.HttpClient.New(Unknown Source)
    at sun.net.www.http.HttpClient.New(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(Unknown Source)
    at com.designapplet.a.f.a(Unknown Source)
    at com.designapplet.ui.c.a(Unknown Source)
    at com.designapplet.ui.c.for(Unknown Source)
    at com.designapplet.ui.DesignApplet.buy(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.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.GeneratedMethodAccessor2.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.plugin.liveconnect.PrivilegedCallMethodAction.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.plugin.liveconnect.SecureInvocation$2.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.plugin.liveconnect.SecureInvocation.CallMethod(Unknown Source)
java.net.MalformedURLException: no protocol: 
    at java.net.URL.<init>(Unknown Source)
    at java.net.URL.<init>(Unknown Source)
    at java.net.URL.<init>(Unknown Source)
    at sun.plugin.liveconnect.SecureInvocation.checkLiveConnectCaller(Unknown Source)
    at sun.plugin.liveconnect.SecureInvocation.access$000(Unknown Source)
    at sun.plugin.liveconnect.SecureInvocation$2.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.plugin.liveconnect.SecureInvocation.CallMethod(Unknown Source)
java.net.MalformedURLException: no protocol: 
    at java.net.URL.<init>(Unknown Source)
    at java.net.URL.<init>(Unknown Source)
    at java.net.URL.<init>(Unknown Source)
    at sun.plugin.liveconnect.SecureInvocation.checkLiveConnectCaller(Unknown Source)
    at sun.plugin.liveconnect.SecureInvocation.access$000(Unknown Source)
    at sun.plugin.liveconnect.SecureInvocation$2.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.plugin.liveconnect.SecureInvocation.CallMethod(Unknown Source)

解决方案

Thanks for the responses. I didn't award the bounty because while the answers were all helpful, none quite solved the problem.

Ultimately, I solved the problem by passing the data from the applet to the web page, then executing an AJAX call to communicate with the server. Not the most elegant solution, certainly, but it has proved effective thus far.

Try it out, and lemme know if it works for you.

Thanks again!

这篇关于为什么我的小程序获得java.security.AccessControlException:访问被拒绝(java.net.SocketPermission ...),我怎么能避免呢?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆