Mamy lokalnie opracowany potrójny sklep oparty na b-drzewach, który chcę użyć do trwałego przechowywania w wielu aplikacjach serwletów. Zamiast osadzać pliki indeksu b-tree w serwlecie .war, chciałbym przechowywać je w znanej lokalizacji i mieć serwlety do bezpośredniego dostępu do nich. To wszystko działa w Jetty, ale podnosi wyjątek bezpieczeństwa, gdy próbuję go w Tomcat. Powiedziano mi, że model bezpieczeństwa Tomcat wymaga jawnych uprawnień serwletu, aby uzyskać dostęp do plików spoza drzewa katalogów, gdzie rozpakowana jest .war. Jakbym rozumiał (wersja 5.5) Dokumentacja Tomcat prawidłowo, co następuje dodany do catalina.policy
powinno pozwolić serwletu aby uzyskać dostęp do katalogów gdzie znajdują się pliki indeksowe są:Ustawienie catalina.policy w celu umożliwienia dostępu do plików przez serwlety
grant codeBase "jar:file:${catalina.home}/webapps/mytestapp/-"
{
permission java.io.FilePermission "/var/data/tdb/-", "read, write, delete";
}
Jednak wciąż otrzymuję wyjątek zabezpieczeń:
java.io.FileNotFoundException:
/var/data/tdb/kb/node2id.idn (Permission denied)
at java.io.RandomAccessFile.open(Native Method)
...
Aby odliczyć oczywiste głupie błędy: Sprawdziłem, czy pliki indeksu znajdują się we właściwej lokalizacji, z odpowiednimi uprawnieniami i nie są uszkodzone. Wszelkie sugestie lub podpowiedzi na temat tego, co mam źle w ustawieniach bezpieczeństwa, zostaną z wdzięcznością przyjęte.
Czy możesz podać, w jaki sposób otwierasz plik/jakiego kodu używasz? –
Czy używasz selinux? Jeśli tak, może być konieczne skonfigurowanie selinux, aby umożliwić dostęp do tego katalogu przez Javę. – Eddie