Tomcat AccessControlException:access 拒绝 ("java.io.FilePermission" "logs" "read")

Tomcat AccessControlException:access denied ("java.io.FilePermission" "logs" "read")

我正在使用 tomcat 中的 Security Manager 功能,并且能够利用 Catalina.policy 文件来管理权限。 尽管如此,我还是收到了我的网络应用程序的错误日志

以下是策略文件中给出的权限

permission java.io.FilePermission "${catalina.base}${file.separator}logs", "read, write";
permission java.io.FilePermission "${catalina.base}${file.separator}logs${file.separator}*", "read, write"; 
permission java.util.PropertyPermission "java.util.logging.config.class", "read";

CATALINA CODE PERMISSIONS 的部分默认存在于策略文件中,modified.I 没有创建一个单独的 codeBase 部分,我将其保存在其中我的网络应用程序并添加了上述权限。

这些是我在 logging.properties 文件

中启用的日志处理程序
handlers = 1catalina.org.apache.juli.AsyncFileHandler, 2localhost.org.apache.juli.AsyncFileHandler, 3manager.org.apache.juli.AsyncFileHandler, 4host-manager.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler

.handlers = 1catalina.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler

2localhost.org.apache.juli.AsyncFileHandler.level = INFO
2localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.AsyncFileHandler

org.apache.jasper.compiler.TldLocationsCache.level = WARNING

org.apache.jasper.level = WARNING

我错过了什么吗?请指导我。 谢谢

虽然这个 mkyong link 解决了我的问题,但我认为这有点 hack(我也可能是错的) 可以授予 tomcat-juli.jar 所有权限吗? 我后来发现这个 answer 也指向上面相同的 link.

更新: 错误跟踪是由于在 logging.properties 文件中注册的日志记录处理程序过多而注销它们导致堆栈跟踪消失。 不过,不知道为什么会这样

permission java.security.AllPermission;

虽然按照 link 进行了工作。

如果你只是做本地测试,不需要安全,还有一种方法,双击[=]时取消勾选"Enable Security" 15=] 在 Eclipse 中获取 Tomcat 配置。