Java Applet权限

我已经整理了一个基本applet,用户从硬盘驱动器中选择一个文件,它读取该文件的第一行并将其传递给JavaScript进行一些额外的预处理,然后当您单击一个按钮时它会尝试上传文件通过HTTP POST请求提交文件.我发现了一个非常基本的开源applet,用于上传我为此最后一点复制和修改文件.

但麻烦的是,它并不常用.看起来它运行正常,但后来我遇到了两个与权限相关的障碍. Java控制台中的消息表明applet在以下两个权限上具有访问被拒绝错误

java.lang.RuntimePermission setFactory
java.io.FilePermission read

我发现这很奇怪,因为当我使用NetBeans中选中的“自签名”选项构建它时,我认为我已经授予了applet权限,然后单击以确认浏览器中的小安全性弹出窗口.

此外,我自己编写的部分,它读取文件并将第一行传递给JavaScript的工作正常.这是一个非常明确的指示,表明applet能够从本地文件系统中读取!在我真正尝试开始上传之前,问题才会开始.我想,有一点需要注意的是,上传过程似乎是在一个新线程中运行,而其余部分都在主类中运行而不创建线程.

我是Java的新手,对Java中的线程知之甚少;我需要以某种方式将权限传递给这个新线程吗?或者那种效果
提前致谢.

最佳答案
您可能需要向安全管理员(代码,而不是管理员)询问是否允许执行特权操作.由于各种原因,applet能够打开本地文件通常不是一件好事,所以它的保护程度非常高.

基本的关键是调用AccessController.doPrivileged()并在Java Ranch FAQ上有一个good little tutorial.

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...