Настройка catalina.policy для разрешения доступа к файлам сервлетам

У нас есть разработанное локально тройное хранилище на основе b-деревьев, которое я хочу использовать для постоянного хранения в ряде приложений сервлетов. Вместо того, чтобы встраивать индексные файлы b-дерева в сервлет .war, я хотел бы сохранить их в известном месте и позволить сервлетам обращаться к ним напрямую. Все это работает в Jetty, но вызывает исключение безопасности, когда я пробую это в Tomcat. Мне сказали, что модель безопасности Tomcat требует явных разрешений сервлету для доступа к файлам вне дерева каталогов, куда распаковывается .war. Если я правильно понял документацию Tomcat (версия 5.5), следующее, добавленное к, 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)
    ...

Чтобы отметить очевидные глупые ошибки: я проверил, что индексные файлы находятся в правильном месте, с правильными разрешениями и не повреждены. Любые предложения или намеки на то, что я сделал не так в настройках безопасности, будут с благодарностью приняты.

Ответов (1)

Решение
java.io.FileNotFoundException: 
                /var/data/tdb/kb/node2id.idn (Permission denied)

Это ваша ОС, запрещающая доступ, а не безопасность Java. Если бы это была безопасность Java, вы бы получили AccessControlException (или другую форму SecurityException ). Предположительно, пользователь, у которого запущен процесс Tomcat, не имеет доступа к этому файлу.