gpt4 book ai didi

java - Tomcat AccessControlException 尽管使用了 AllPermission

转载 作者:行者123 更新时间:2023-11-28 23:24:20 24 4
gpt4 key购买 nike

我正在尝试将 WAR 部署到 Tomcat,但遇到了 Java 安全管理器的问题。这是运行 Java 1.8.0 的 Tomcat 7.0.55,并且 Tomcat 以这样的参数启动:

-Dcatalina.base="/path/to/apache-tomcat-7.0.55"
-Dcatalina.home="/path/to/apache-tomcat-7.0.55"
-Djava.endorsed.dirs="/path/to/apache-tomcat-7.0.55\endorsed"
-Djava.security.manager
-Djava.security.policy="/path/to/config/custom_catalina.policy"

这里重要的是它启用了 Java 安全管理器,然后将其指向自定义安全策略,如下所示:

grant {
permission java.security.AllPermission;
};

这似乎会导致激活安全管理器然后告诉它只允许一切的毫无意义的配置(我不运行服务器所以不要怪我!)。然而,当我部署我的 WAR 时,它失败了,有几个堆栈跟踪包含如下内容:

Caused by: java.security.AccessControlException: access denied ("java.util.PropertyPermission" "java.version" "read")
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:457) ~[?:1.8.0_51]
at java.security.AccessController.checkPermission(AccessController.java:884) ~[?:1.8.0_51]
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549) ~[?:1.8.0_51]
at java.lang.SecurityManager.checkPropertyAccess(SecurityManager.java:1294) ~[?:1.8.0_51]
at java.lang.System.getProperty(System.java:753) ~[?:1.8.0_51]
at org.apache.commons.lang3.JavaVersion.maxVersion(JavaVersion.java:196) ~[commons-lang3-3.4.jar:3.4]

我已经尝试通过类似以下方式将 AllPermission 明确授予我自己的应用程序:

grant codeBase "file:${catalina.home}/webapps/myApp/-" {
permission java.security.AllPermission;
};

甚至明确授予 PropertyPermission 读取 java.version。这些都没有任何区别。相同的 AccessControlException 仍然会被抛出并阻止部署。

这是怎么回事?我该如何解决这个问题?

最佳答案

我们的不是在部署期间出现的,而是在重负载测试期间出现的。

我们将 server.xml 中的连接器从 Nio2 更改为 Nio,它为我们解决了问题org.apache.coyote.http11.Http11NioProtocol(NIO 的第一个版本,而不是 NIO2)。

我们没有禁用 tomcat 安全管理器,这违反了我们公司的政策。

关于java - Tomcat AccessControlException 尽管使用了 AllPermission,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39147113/

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