【发布时间】:2018-02-04 00:21:49
【问题描述】:
我们在 Tomcat 7.0.65 上部署了一个 WAR 应用程序。这个应用程序使用了一个库,它的资源目录中有一堆多边形.txt 文件。每当调用该库时,它都会在已展开的 war 目录中的 jar 文件上引发文件权限异常。
这是错误:
Caused by: java.security.AccessControlException: access denied ("java.io.FilePermission" "/var/lib/tomcat7/webapps/**/WEB-INF/lib/table-service-1.37.jar" "read")
at org.apache.catalina.loader.WebappClassLoaderBase.getResourceAsStream(WebappClassLoaderBase.java:1659) ~[catalina-7.0.65.jar:7.0.65]
at com.**.PropertyGeometryDAO.initialize(PropertyGeometryDAO.java:47) ~[table-service-1.37.jar:?]
在代码中的这一行抛出:
try (InputStream stream = getClass().getClassLoader().getResourceAsStream(fileName))
这是定义权限的 catalina.policy 文件:
permission java.io.FilePermission "/usr/share/tomcat7/webapps/*", "read";
我们还使用相同的库在同一个 Tomcat 上部署了单独的 WAR,它们运行良好。
【问题讨论】:
-
如何同时指定读取和写入权限? tomcat.apache.org/tomcat-7.0-doc/…