2017-08-25 61 views
0

我們在tomcat 7.0.65上部署了一個.war應用程序。這個應用程序使用一個庫,在它的資源目錄中有一堆polygon.txt文件。無論何時調用庫,它都會在分解的war目錄中的jar文件上引發文件權限異常。Tomcat拒絕訪問分解的戰爭目錄中的資源文件

這裏是錯誤:

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"; 

我們也有單獨的.war的部署在同一個tomcat使用相同的庫,工作得很好。

+0

如何既specifiying讀,WITE接取? https://tomcat.apache.org/tomcat-7.0-doc/security-manager-howto.html#Tomcat_Custom_Permissions – nullpointer

回答

0

例外情況是

"/var/lib/tomcat7/webapps/**/WEB-INF/lib/table-service-1.37.jar" 

但你的權限是

permission java.io.FilePermission "/usr/share/tomcat7/webapps/*", "read"; 
+0

我應該包括,從/ usr/share/tomcat7/webapps - >/var/lib/tomcat7/webapps – user1308752

+0

您可能需要readLink FilePermission,然後https://docs.oracle.com/javase/7/docs/api/java/io/FilePermission.html – mikep