Properties in Tomcat

Wenn man danach sucht, wie man Properties in Webapps bzw. Servlets lädt, findet man viel Unsinn, bzw. nicht richtig durchdachte oder unvollständige Lösungen. Das hier ist daher ein Versuch, für mich selbst mal einen funktionierenden Ansatz zusammenzuschreiben.

Ausgangspunkt war dieser Blog-Eintrag. Zum Zugriff auf eine Properties-Datei wird dort folgender Code verwendet:

[sourcecode language="java"]
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("myApp.properties");
Properties properties = new Properties();
properties.load(inputStream);
[/sourcecode]

So weit, so gut. OK, das Laden von Konfiguration über einen Classloader erscheint auf den ersten Blick merkwürdig. Aber sei es drum …

Bloß: Wo lege ich die Konfigurationsdatei jetzt ab, so dass sie auch gefunden wird? Im WAR/AAR jedenfalls nicht – ich will diese Archive ja nicht neu packen, bloß weil sich (Deployment-spezifische) Einstellungen ändern. Ein anderes Blog brachte dann eine Lösung, jedenfalls für Tomcat: Man soll den shared class loader benutzen. Also habe ich meine Datei in $CATALINA_HOME/shared/classes angelegt. Schnell noch die Property shared.loader in conf/catalina.properties angepasst … Doch halt: Die ist schon da und ist leer, was laut Kommentar heißt, dass in $CATALINA_HOME/shared gesucht wird. Für mein Empfinden ist das etwas anderes als $CATALINA_HOME/shared/classes. Naja, egal. Ich hatte keine Lust auf weiteres Ausprobieren und habe die Property einfach neu gesetzt:

[sourcecode]
shared.loader=${catalina.home}/shared/classes
[/sourcecode]

Das tut jetzt sowohl für Webapps/Servlets als auch für Axis2-Webservices. Prima.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht.

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>