5
我们有一个基于b-trees的本地开发的三重存储,我希望将它用于许多servlet应用程序中的持久存储。我不想将b-tree索引文件嵌入到servlet .war中,而是将它们存储在已知位置,并让servlet直接访问它们。这一切都在Jetty中起作用,但是当我在Tomcat中尝试时会引发安全异常。我被告知Tomcat的安全模型需要显式权限才能访问解压.war文件所在目录树以外的文件。如果我Tomcat的(5.5版)文档正确理解,下面添加到catalina.policy
应该允许servlet访问其中索引文件的目录:设置catalina.policy以允许servlets访问文件
grant codeBase "jar:file:${catalina.home}/webapps/mytestapp/-"
{
permission java.io.FilePermission "/var/data/tdb/-", "read, write, delete";
}
不过,我还是收到了安全例外:
java.io.FileNotFoundException:
/var/data/tdb/kb/node2id.idn (Permission denied)
at java.io.RandomAccessFile.open(Native Method)
...
打勾明显的愚蠢错误:我已检查索引文件是在正确的位置,具有正确的权限,并没有损坏。对于我在安全设置中出现错误的任何建议或提示将非常感激。
你可能会发布你如何打开文件/你正在使用什么代码来做到这一点? – 2009-02-23 20:40:52
您正在运行selinux吗?如果是这样,您可能需要配置selinux以便它允许Java访问该目录。 – Eddie 2009-02-23 20:51:48