Wir haben einen lokal entwickelten Triple-Store basierend auf B-Bäumen, den ich für die dauerhafte Speicherung in einer Reihe von Servlet-Anwendungen verwenden möchte. Anstatt die b-tree-Indexdateien in das Servlet .war einzubetten, möchte ich sie an einem bekannten Ort speichern und die Servlets direkt darauf zugreifen lassen. Das alles funktioniert in Jetty, löst aber eine Sicherheitsausnahme aus, wenn ich es in Tomcat versuche. Mir wurde gesagt, dass das Sicherheitsmodell von Tomcat explizite Berechtigungen für ein Servlet benötigt, um auf Dateien zuzugreifen, die sich außerhalb der Verzeichnisstruktur befinden, in der das WAR entpackt ist. Wenn ich die Tomcat (Version 5.5) Dokumentation richtig verstanden habe, ist folgendes hinzugefügt catalina.policy
das Servlet, damit die Verzeichnisse zuzugreifen, in dem die Indexdateien sind:Catalina.policy für den Dateizugriff über Servlets einstellen
grant codeBase "jar:file:${catalina.home}/webapps/mytestapp/-"
{
permission java.io.FilePermission "/var/data/tdb/-", "read, write, delete";
}
Allerdings habe ich immer noch eine Sicherheitsausnahme erhalten:
Zum Ankreuzen der offensichtlichen dummen Fehler: Ich habe überprüft, dass die Indexdateien mit den richtigen Berechtigungen am richtigen Ort sind und nicht beschädigt sind. Irgendwelche Vorschläge oder Hinweise auf das, was ich falsch in den Sicherheitseinstellungen bin, würde dankbar erhalten.
Können Sie vielleicht posten, wie Sie die Datei öffnen/welchen Code verwenden Sie, um dies zu tun? –
Laufen Sie selinux? Wenn dies der Fall ist, müssen Sie selinux möglicherweise so konfigurieren, dass der Zugriff auf dieses Verzeichnis von Java ermöglicht wird. – Eddie