SecureCookiePermission问题 - 小程序不是最新的Java 6更新工作29 [英] SecureCookiePermission issue - Applet not working with latest Java 6 update 29

查看:576
本文介绍了SecureCookiePermission问题 - 小程序不是最新的Java 6更新工作29的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我们的网站,我们使用的小程序未升级到Java 6更新29的Applet应与服务器用于存储数据的数据库沟通后,工作。小程序工作在的Java版本较低(更新22或26或27)的罚款,这是不可能的,让我们的客户可以降级的Java版本。我发现Java控制台一些错误,我认为Java原本不能够访问/创建的cookie或会话(某种许可问题)。谁能帮我这个问题?

谢谢!

 网​​络:连接http://www.example.com:80/与代理= DIRECT
java.security.AccessControlException:访问被拒绝(com.sun.deploy.security.SecureCookiePermission origin.http://www.example.com中:80)
    在java.security.AccessControlContext.checkPermission(来源不明)
    在java.security.AccessController.checkPermission(来源不明)
    在java.lang.SecurityManager.checkPermission(来源不明)
    在com.sun.deploy.net.cookie.DeployCookieSelector.canServeCookies(来源不明)
    在com.sun.deploy.net.cookie.DeployCookieSelector.get(来源不明)
    在sun.net.www.protocol.http.HttpURLConnection.setCookieHeader(来源不明)
    在sun.net.www.protocol.http.HttpURLConnection.writeRequests(来源不明)
    在sun.net.www.protocol.http.HttpURLConnection.getInputStream(来源不明)
    在ATutorApiAdapterApplet.ATutorCommit(ATutorApiAdapterApplet.java)
    在ATutorApiAdapterApplet.LMSCommit(ATutorApiAdapterApplet.java)
    在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
    在sun.reflect.NativeMethodAccessorImpl.invoke(来源不明)
    在sun.reflect.DelegatingMethodAccessorImpl.invoke(来源不明)
    在java.lang.reflect.Method.invoke(来源不明)
    在sun.plugin.javascript.JSInvoke.invoke(来源不明)
    在sun.reflect.GeneratedMethodAccessor4.invoke(来源不明)
    在sun.reflect.DelegatingMethodAccessorImpl.invoke(来源不明)
    在java.lang.reflect.Method.invoke(来源不明)
    在sun.plugin.javascript.JSClassLoader.invoke(来源不明)
    在sun.plugin2.liveconnect.JavaClass $ MethodInfo.invoke(来源不明)
    在sun.plugin2.liveconnect.JavaClass $ MemberBundle.invoke(来源不明)
    在sun.plugin2.liveconnect.JavaClass.invoke0(来源不明)
    在sun.plugin2.liveconnect.JavaClass.invoke(来源不明)
    在sun.plugin2.main.client.LiveConnectSupport $ PerAppletInfo $ DefaultInvocationDelegate.invoke(来源不明)
    在sun.plugin2.main.client.LiveConnectSupport $ PerAppletInfo $ 3.run(来源不明)
    在java.security.AccessController.doPrivileged(本机方法)
    在sun.plugin2.main.client.LiveConnectSupport $ PerAppletInfo.doObjectOp(来源不明)
    在sun.plugin2.main.client.LiveConnectSupport $ PerAppletInfo $ LiveConnectWorker.run(来源不明)
    在java.lang.Thread.run(来源不明)
网络:服务器http://www.example.com/write.php请求设置的cookie土狼-2-8b928cf0 = a000200:0;域名= example.com;路径= /
网络:服务器http://www.example.com/write.php请求设置的cookieSESSION = 1v1md9bphfvgrqal38vg5quba1;路径= /
ATutor的CMI存储失败。
java.security.AccessControlException:访问被拒绝(java.util.PropertyPermission http.strictPostRedirect读)


解决方案

这是应该被固定在更新中的错误30

http://bugs.sun.com/bugdatabase/view_bug.do? bug_id = 7102914

不过,我更新,以更新30 preVIEW版本,仍然有同样的问题。唯一的解决方案(其中包括很多东西,我试过)是包装任何调用,使使用的AllPermission在AccessController.doPrivileged块到服务器的连接。

 权限的权限=新的权限();
permissions.add(新的AllPermission());
AccessControlContext的背景=新的AccessControlContext(
        新的ProtectionDomain [] {新的ProtectionDomain(NULL,权限)});在AccessController.doPrivileged(新的PrivilegedAction<对象>()
    {
        @覆盖
        公共对象的run()
        {
            URL连接code
        }
    },上下文);

In our website, we use applet which is not working after upgrading to Java 6 Update 29. Applet should communicate with server for storing data's to database. Applets works fine in lower of versions of Java (Update 22 or 26 or 27) and it's impossible to ask our clients to downgrade the java versions. I found some errors in Java console and I think java couldn't able to access/create cookie or session (some kind of permission issue). Can anyone help me with this issue?

Thanks!

network: Connecting http://www.example.com:80/ with proxy=DIRECT
java.security.AccessControlException: access denied (com.sun.deploy.security.SecureCookiePermission origin.http://www.example.com:80)
    at java.security.AccessControlContext.checkPermission(Unknown Source)
    at java.security.AccessController.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkPermission(Unknown Source)
    at com.sun.deploy.net.cookie.DeployCookieSelector.canServeCookies(Unknown Source)
    at com.sun.deploy.net.cookie.DeployCookieSelector.get(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.setCookieHeader(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    at ATutorApiAdapterApplet.ATutorCommit(ATutorApiAdapterApplet.java)
    at ATutorApiAdapterApplet.LMSCommit(ATutorApiAdapterApplet.java)
    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.GeneratedMethodAccessor4.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)
network: Server http://www.example.com/write.php requesting to set-cookie with "Coyote-2-8b928cf0=a000200:0; domain=example.com; path=/"
network: Server http://www.example.com/write.php requesting to set-cookie with "SESSION=1v1md9bphfvgrqal38vg5quba1; path=/"
ATutor cmi storage failed.
java.security.AccessControlException: access denied (java.util.PropertyPermission http.strictPostRedirect read)

解决方案

This is a bug that is supposed to be fixed in update 30

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7102914

However, I updated to the preview version of update 30 and still have the same problem. The ONLY solution (amongst many things I tried) is to wrap any calls to make connections to the server in an AccessController.doPrivileged block using AllPermission.

Permissions permissions = new Permissions();
permissions.add(new AllPermission());
AccessControlContext context = new AccessControlContext(
        new ProtectionDomain[]{new ProtectionDomain(null, permissions)});

AccessController.doPrivileged(new PrivilegedAction<Object>()
    {
        @Override
        public Object run()
        {
            URL connecting code
        }
    }, context);

这篇关于SecureCookiePermission问题 - 小程序不是最新的Java 6更新工作29的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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