2011-02-22 21 views
0

我使用Apache 2.0.8菲利克斯在OSGi中,我的权限被拒绝在主线程,但允许在EDT线程

,我实现了扩展BasicPermission自定义权限,启动了安全管理器(-Djava .security.manager),并指定我自己的政策文件(-Djava.security.file = “文件:C:\布拉布拉\ myfile.policy”

  • 从简单的独立测试(一个简单的主OSGi以外的方法)我已经断言,当我更改我的策略fil时,我的许可行为正确即一切安好。在我的OSGi包中,我注意到当在主线程(在我的激活器的回调中)和其他一些由我启动的线程中执行时,相同的代码示例很好。但是,一旦从AWT-EventQueue线程执行它,就会始终允许完全相同的权限。

除正在执行的线程,我看不出有什么区别...

有没有人遇到过类似的事情?

回答

1

在OSGi中,框架不会咨询策略文件以获取捆绑的权限。捆绑的权限通过ConditionalPermissionAdmin(和较早的PermissionAdmin)服务设置。作为引导程序,所有的bundle都被授予AllPermission,直到某些bundle“声明”控件并为bundle设置权限。因此,除非通过ConditionalPermissionAdmin设置权限信息,否则所有软件包都将使用AllPermission运行。