如何授予jnlp文件中依赖lib的所有权限?

2024-01-13

我在使用 Java Web Start 时遇到了一个严重的问题,我无法理解。情况如下:我有一个 JavaFX 应用程序,编写为 Java8,我想使用 Java WebStart 进行部署。直到最近,我还使用 HTTP 与服务器进行通信,一切都运行良好。我可以使用浏览器中嵌入的 Web Start 或作为独立应用程序来部署该应用程序。

不过,我现在已将通信更改为使用 WebSockets。为此,我目前正在使用 tyrus 实现。现在问题来了:由于我添加了 tyrus 库,当 tyrus 尝试访问系统属性时,我总是收到 AccessControlException:

Caused by: java.security.AccessControlException: access denied ("java.util.PropertyPermission" "weblogic.websocket.client.max-aio-threads" "read")
at java.security.AccessControlContext.checkPermission(Unknown Source) ~[na:1.8.0_25]
at java.security.AccessController.checkPermission(Unknown Source) ~[na:1.8.0_25]
at java.lang.SecurityManager.checkPermission(Unknown Source) ~[na:1.8.0_25]
at sun.plugin2.applet.FXAppletSecurityManager.checkPermission(Unknown Source) ~[na:na]
at java.lang.SecurityManager.checkPropertyAccess(Unknown Source) ~[na:1.8.0_25]
at java.lang.System.getProperty(Unknown Source) ~[na:1.8.0_25]
at org.glassfish.tyrus.container.jdk.client.JdkClientContainer.openClientSocket(JdkClientContainer.java:106) ~[na:na]

但是,我可以轻松地从我自己的任何类中访问该属性,例如如果我这样做

logger.info(System.setProperty(ClientManager.WLS_MAX_THREADS, "1"));
logger.info(System.getProperty(ClientManager.WLS_MAX_THREADS));

我得到了预期的结果,没有安全问题。

当然,我已经确保所有罐子都经过完全签名,所有罐子都有Permissions: all-permissions在其 Manifest.MF 文件中标记,并且 jnlp 确实具有所需的<security><all-permissions /></security> tag.

除此之外,我还尝试使用 jetty websocket 实现,但这给了我完全相同的问题。

那么有人知道为什么 tyrus 代码无法访问与主代码相同的系统属性吗?


好的,谢谢您的帮助,我终于找到答案了。 @Tom Hawtin 的提示给了我正确的线索,我仍然需要将通话结束webSocket.connectToClient() in AccessController.doPrivileged()获得依赖代码的完整权限。

但是我仍然不完全理解为什么用签名代码Permissions: all-permissions不可信,也许我应该阅读 WebStart 安全模型。

编辑: 好吧,经过更多尝试并发现更多奇怪的错误后,我发现了真正的问题:当我将 WebSocket 集成到应用程序中时,我大量使用了CompleableFuture.xxxAsync()方法。默认情况下,它们在公共 ForkJoinPool 上运行,而 ForkJoinPool 又在特殊线程上运行(InnocuousForkJoinWorkerThread)如果存在安全管理器(使用 jnpl 的情况很明显)。这些没有任何权限,这正确地触发了所有这些错误。

所以解决方案是使用自定义的 ExecutorxxxAsync(xxx, executor) calls.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何授予jnlp文件中依赖lib的所有权限? 的相关文章

  • Android 中的 java.util.Observable 是线程安全的吗?

    Android 中的 java util Observable 是线程安全的吗 这文档 http developer android com reference java util Observable html说只有deleteObser
  • Java - 红、绿、蓝获取RGB

    通过致电getRGB int x int y with a BufferedImage对象 得到一个负数 如何将三个不同的值 红色 绿色和蓝色 转换为这个单个负数 使用颜色类 new Color r g b getRGB
  • Java:无安全管理器:RMI 类加载器已禁用

    您好 我有 RMI 应用程序 现在我尝试从客户端调用服务器上的一些方法 我有以下代码 public static void main final String args try Setting the security manager Sy
  • 为什么我的 @OneToMany 属性出现主键违规?

    我有一个实体 Entity public class Student GeneratedValue strategy GenerationType AUTO Id private long id OneToMany private Set
  • Java - toString 到 Color

    我一整天都在努力解决这个问题 基本上我做了一个 for 循环 将条目添加到数组列表中 其中一项是 颜色 变量 我已经用过random nextInt为颜色构造函数的红色 绿色和蓝色部分创建新值 我还设置了一个toString方法 这样我就可
  • 数据加密

    存储大量信用卡信息的数据库是我们刚刚完成的系统中不可避免的一部分 不过 我想要的是卡号的最终安全性 我们可以设置一种加密和解密机制 但我们自己无法解密任何给定的号码 我所追求的是一种即使在数据库级别也能保护这些信息的方法 这样任何人都无法进
  • 使用 equals 方法比较两个对象,Java

    我有一个对象数组 我想将它们与目标对象进行比较 我想返回与目标对象完全匹配的对象的数量 这是我的计数方法 public int countMatchingGhosts Ghost target int count 0 for int i 0
  • 开发人员实际上是否使用 vim 在 Windows 操作系统上编写代码(Java)? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Java:不使用 Arrays.sort() 对整数数组进行排序

    这是我们 Java 课程的练习之一中的说明 首先 我想说我 做了我的功课 我不仅仅是懒惰地请 Stack Overflow 上的人帮我回答这个问题 在所有其他练习中 这个特定项目一直是我的问题 因为我一直在努力寻找 完美的算法 编写JAVA
  • 按名称获取 ArrayList

    这是正确的获取方式吗ArrayList
  • 如何从 Trie 中检索给定长度的随机单词

    我有一个简单的 Trie 用来存储大约 80k 长度为 2 15 的单词 它非常适合检查字符串是否是单词 但是 现在我需要一种获取给定长度的随机单词的方法 换句话说 我需要 getRandomWord 5 来返回 5 个字母的单词 所有 5
  • Java:java.util.Preferences 失败

    我的程序将加密的产品密钥数据保存到计算机上java util Preferences类 系统首选项 而不是用户 问题是 在 Windows 和 Linux 上 尚未在 OSX 上测试过 但可能是相同的 如果我不运行该程序sudo或者具有管理
  • Java 中通用方法参数的 getClass()

    以下 Java 方法无法编译
  • java中的第三个布尔状态是什么?

    虽然我知道根据定义 布尔值仅包含两种状态 真或假 我想知道布尔值在用这些状态之一初始化之前有什么值 它默认为 false http java sun com docs books tutorial java nutsandbolts dat
  • 如何在启用嵌入时间戳和 LTV 的情况下签署 PDF?

    我正在尝试签署启用了时间戳和 LTV 的 pdf 以便它在 Adob e Reader 中显示如下 在英语中 这意味着 签名包含嵌入的时间戳 和 签名启用了 LTV 这是我正在使用的代码 PrivateKey pk get pk from
  • 将 PropertyPlaceholderConfigurer 中的所有属性注入到 bean 中

    我有一个PropertyPlaceholderConfigurer加载多个属性文件 我想通过配置 XML 将合并的属性映射注入到 Spring Bean 中 我可以这样做以及如何做 您只需创建一个属性 bean 并将其用于您的Propert
  • 使用 Commons 或 Guava 将文本文件转换为 Java Set

    我想将文件中的每一行加载到 HashSet 集合中 有没有一种简单的方法可以做到这一点 怎么样 Sets newHashSet Files readLines file charSet 使用番石榴 参考 文件 readLines http
  • Javac 版本 1.7 无法为目标 1.7 构建

    我试图在 Linux Mint 系统上使用 Sun Java JDK 1 7 0 17 编译 Java 代码 但遇到了这个问题 javac version target 1 7 javac 1 7 0 17 javac invalid ta
  • 一个类中有多个具有相同参数类型的方法

    我知道 至少已经有了关于这个主题的一个问题 https stackoverflow com questions 5561436 can two java methods have same name with different retur
  • 如何让JComboBox中的内容居中显示?

    目前我有这个JComboBox 我怎样才能将其中的内容居中 String strs new String 15158133110 15158133124 15158133458 JComboBox com new JComboBox str

随机推荐

  • Node.js、dgram.setBroadcast(flag) 由于“EBADF”而失败

    我正在使用 Node js 0 6 9 并尝试发送数据报广播包 代码 var sys require util var net require net var dgram require dgram var message new Buff
  • 此类不符合键值编码

    我创建了三个文件SettingsViewController h SettingsViewController m 和SettingsViewController xib 我在单击一行中的单元格时显示 SwttingsViewControl
  • Lua - 我怎样才能获得回报?

    我有兴趣获取函数的任何返回格式 例如 function foo return 1 end local result foo foo is numeric 1 function foo return 1 2 3 end local resul
  • 如何仅重新加载 UICollectionView 的数据部分?

    我试图仅重新加载 UICollectionView 的数据部分 而不是页眉或页脚 补充视图 当我使用reloadData方法 页眉和页脚部分也会重新加载 这就是我想要的 我找到了方法reloadSections 但我不知道为什么它不起作用
  • Android-sdk 管理器未显示所有包

    我有一个问题 我的 android sdk manager 突然停止显示所有软件包 它只显示已安装的软件包 你们能帮我解决这个问题吗 导航到文件 gt 设置 gt Android SDK gt SDK 更新站点选项卡 在该检查中强制 htt
  • ADO.Net 最佳实践 - 进行异步数据库调用时的单个连接与多个连接

    我正在使用 ADO Net 连接到一些 Sql Server 和 Oracle 数据库 并且我想同时运行一些查询 我对 Sql Server 使用 SqlClient 命名空间中的类 对 Oracle 使用 ODP Net 中的类 对于 S
  • watchkit 扩展未启动

    我无法在模拟器上启动 iOS Watch 应用程序 在 Yosemite 上安装了最新的 Beta 6 2 1 我创建一个基于单一视图的应用程序 2 添加App Watch目标 3 自动创建分机和Watch App 4 运行App并启动模拟
  • 如何使图像标题宽度与图像宽度匹配?

    我正在尝试设计这个样式 div class figure img src some image jpg p class caption span class caption text Some caption of any length s
  • C# 获取%AppData%的路径

    C 2008 SP1 我正在使用下面的代码 dt ReadXml AppData DateLinks xml 但是 我收到一个异常 该异常指向我的应用程序运行的位置 找不到路径的一部分 D Projects SubVersionProjec
  • 打字稿导入类

    我已经尝试让这个东西工作很长一段时间了 到目前为止 我找到的解决方案还没有对我有用 这就是我所拥有的 Test ts module t export class Test constructor alert test Main ts
  • 在 JSF 中动态创建响应

    我想在我的 JSF 页面上有一个链接 单击此链接时 Java Web Start 应用程序将启动 该应用程序根本不影响当前页面 该应用程序会自行启动 问题是 我需要动态生成启动 Java Web Start 应用程序的 JNLP 文件 基本
  • 如何在 Pandas 数据框中堆叠行以获得一个“长行”?

    假设我有一个 4 行 3 列的数据框 我想水平堆叠行 这样我就得到一行 12 列 如何操作以及如何处理冲突的列名称 您可以通过以下方式实现这一目标stack计算框架以产生一系列所有值 然后我们希望使用以下方法将其转换回 dfto frame
  • 将二进制浮点“1101.11”转换为十进制(13.75)的正确算法?

    我用C编写了一个程序来转换浮点数以二进制表示 http kipirvine com asm workbook floating tut htm 1101 11 化为小数 13 75 但是 我似乎无法从算法中获得正确的值 将二进制浮点数转换为
  • JavaScript 中的“闭包”到底指的是什么?

    我理解闭包是什么 但我在理解这个术语到底是什么时遇到了一些困难closure指 我在许多网站上看到过这个术语 但很少有人就其实际定义达成一致 是保存在栈帧上的变量吗 是返回的函数吗 它是外部函数的范围吗 它是内部 返回 函数的范围吗 是不是
  • 如何在 Swift 3 中测试 URL 并获取状态代码?

    我正在使用最新版本的 Xcode 撰写本文时为 8 1 它使用 Swift 3 0 我想做的就是获取一个字符串 将其转换为 URL 并测试该 URL 看看它是否会给出 404 错误 我已经能够使用以下方法创建 URL 和 URLReques
  • Node.JS 内核模式线程

    我试图弄清楚 Node JS 其 Windows 版本 是如何在幕后工作的 我知道有用户模式和内核模式线程 并且我知道处理模型如下所示 我还知道从内核模式线程移动到用户模式线程被认为是上下文切换 Node JS C 非阻塞工作线程是内核模式
  • Angular2 在模板和变更检测中的功能

    我试图在服务中构建一种方法 检查是否应根据当前用户的权限向当前用户显示导航按钮 我知道这只是装饰性的 安全性 因此这是放置在模板内的按钮
  • 尾随返回类型中的占位符是否会覆盖初始占位符?

    g 似乎接受任意组合auto and decltype auto 作为初始和尾随返回类型 int a auto f return a int auto g gt auto return a int auto h gt decltype au
  • 关于 DSO 引用隐藏符号的警告究竟意味着什么?

    我在将某些共享库与 g 链接时遇到问题 它给了我这样的警告 hidden symbol XXX in YYY is referenced by DSO usr lib 我已经阅读了一些有关特定问题的相关问题 但我想从整体上理解它 这个警告是
  • 如何授予jnlp文件中依赖lib的所有权限?

    我在使用 Java Web Start 时遇到了一个严重的问题 我无法理解 情况如下 我有一个 JavaFX 应用程序 编写为 Java8 我想使用 Java WebStart 进行部署 直到最近 我还使用 HTTP 与服务器进行通信 一切