gpt4 book ai didi

java - 在 OSGi 中,我的权限在主线程中被拒绝,但在 EDT 线程中允许

转载 作者:行者123 更新时间:2023-12-01 15:55:48 26 4
gpt4 key购买 nike

我正在使用 Apache Felix 2.0.8

我已经实现了扩展 BasicPermission 的自定义权限,激活了安全管理器 (-Djava.security.manager) 并指定了我自己的策略文件 (-Djava.security.file= “文件:c:\blabla\myfile.policy”)

  • 通过简单的独立测试(OSGi 之外的简单主要方法),我断言当我更改策略文件时我的权限行为正确。一切安好。

    public static void main(String[] args) { 
    try {
    AccessController.checkPermission(new MyPermission("foo"));
    System.out.println("OK");
    } catch (SecurityException e) {
    System.out.println("NOK");
    }
    }

  • 在我的 OSGi 包中,我注意到相同的代码示例在主线程(在我的激活器的回调中)和我启动的其他线程中执行时都很好。但是,一旦从 AWT-EventQueue 线程执行它,就始终允许相同的权限。

除了执行线程之外,我没有看到任何区别...

有人经历过类似的事情吗?

最佳答案

在 OSGi 中,框架不会查阅策略文件来获取包的权限。 bundle 的权限是通过 ConditionalPermissionAdmin(和旧版 PermissionAdmin)服务设置的。作为 Bootstrap ,所有 bundle 都被授予 AllPermission,直到某些 bundle “断言”控制并为 bundle 设置权限。因此,在您通过 ConditionalPermissionAdmin 设置权限信息之前,所有 bundle 都将以 AllPermission 运行。

关于java - 在 OSGi 中,我的权限在主线程中被拒绝,但在 EDT 线程中允许,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5081175/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com