我最近在通过JNLP启动应用程序时偶然发现了一个问题。我现在把它缩小到java.security.AccessControlException
,这使我无法关闭ExecuterService
。
所以,我做了一些阅读,发现我需要权限(modifyThread
)才能成功关闭服务。我还发现我应该使用<security>
- 标签(在JNLP文件中)来请求它,但我对如何使用感到困惑。
[...]如果指定了
all-permissions
元素,则应用程序 将拥有对客户端计算机和本地网络的完全访问权限。如果 应用程序请求完全访问权限,然后所有 JAR文件必须是 签名即可。将提示用户 [...]
从阅读本文来看,在我看来,我可以选择所有或没有权限......这似乎是一个令人困惑的实现。因为我只需要关闭我的服务。
我还阅读this article,告诉我不应该请求所有权限,因为我会打开用户计算机以查找恶意代码。
那么,有没有办法指定我只需要特定的权限(modifyThread
),因此我不需要签署我的jar?或者我是否必须使用“签署我的罐子并请求一切” - 接近?
答案 0 :(得分:4)
..我是否必须使用“签署我的罐子并请求一切”-approach?
是。 JWS权限分为3级 1 ,唯一允许修改线程的是all-permissions
。
File
。来自窗口横幅。只能与自己的服务器通信。j2ee-application-client-permissions
- 免费提供这些JNLP API服务(在用户接受经过数字签名的代码之后)删除窗口横幅。all-permissions
- 几乎所有内容,包括替换现有的安全管理器(是的,甚至“所有权限”代码都会在JWS中获得安全管理器 - 它只是非常宽松)。 / LI>