私たちは、いくつかのサーブレットアプリケーションで永続的なストレージに使用するbツリーに基づいて、ローカルに開発されたトリプルストアを持っています。 bツリー索引ファイルをサーブレット.warに埋め込むのではなく、それらを既知の場所に保管してサーブレットに直接アクセスさせたいと考えています。これはすべてJettyで動作しますが、Tomcatで試してみるとセキュリティの例外が発生します。 Tomcatのセキュリティモデルでは、サーブレットが.warが展開されているディレクトリツリーの外のファイルにアクセスするための明示的なアクセス権が必要であると言われています。私が正しくのTomcat(バージョン5.5)ドキュメントを理解している場合、catalina.policy
に追加された次のサーブレットは、インデックスファイルがあるディレクトリにアクセスできるようにする必要があります。しかし、私はまだセキュリティ例外を取得サーブレットによるファイルアクセスを可能にするcatalina.policyの設定
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)
...
私は、インデックスファイルが正しい場所にあり、適切な権限で、壊れていないことを確認しました。私がセキュリティ設定で間違っていることに対する示唆やヒントは、感謝して受け取ります。
ファイルを開く方法/使用しているコードを投稿することはできますか? –
selinuxを実行していますか?そのような場合は、selinuxをJavaでそのディレクトリにアクセスできるように設定する必要があります。 – Eddie