# WebApp context properties setzen, ContextListener



## dermoritz (18. Jan 2012)

ich baue gerade meine erste web-app (gwt). nun habe ich mich schon immer gefragt, was das analogon zur main-methode bei webapps ist: ServletContextListener:contextInitialized

Diese Methode wird aufgerufen wenn der webapp deployed wird. also da würde ich dann die Konfiguration auslesen und Resourcen öffnen.
Nun habe ich mich schon in einem anderen Thread gefragt (http://www.java-forum.org/deploymen...datei-fuer-webapp-war-conf-catalina-host.html) wo man am besten die Konfiguration(sdatei) hinpackt.

Im Lichte der Erkenntnisse über "ServletContextListener" sieht die Sache aber anders aus: Ist " /conf/Catalina/<host>/ " nicht genau die richtige Stelle um Properties für einen bestimmten "context" zu setzen?
Diese kann man dann wunderbar in contextInitialized auslesen und für alles verfügbar machen?!

Was mich wundert, ist dass ich kaum Beipiele dazu gefunden habe bzw. im andere thread mir direkt davon abgeraten wurde?! 
Also gibt es Beipiele für das setzen von Properties für einen "context" einer gegebenen  WebApp? Die Anleitung hier Apache Tomcat Configuration Reference - The Context Container meint es etwas zu "gut".


----------



## nillehammer (18. Jan 2012)

/conf/Catalina/<host>/ 
Das ist das Verzeichnis, wo der Tomcat-Admin seine Konfiguration reinschreibt. In der context.xml konfiguriert er für Dich z.B. Resourcen, die Deine Anwendung über JNDI bekommen soll. Das "Verzeichnis" für Dich als Entwickler ist das War-File bzw. im ausgepackten Zustand das entspr. Verzeichnis unter dem webapps-Ordner.

Ein weiterer Nachteil ist, dass Du in dieses Verzeichnis nur über das Filesystem zugreifen kannst (die entsprechenden Rechte natürlich vorausgesetzt). Wenn Du Deine Properties-Datei aber mit in Dein WAR packst, und zwar so, dass es im Classpath liegt, dann kannst Du über Class.getResource drauf zugreifen und brauchst Dich um Verzeichnisse/Rechte überhaupt nicht zu kümmern.

Was stört Dich den daran, Properties-Dateien dort unter zu bringen? Viele Frameworks (log4j, hibernate usw.) machen das doch auch.


----------



## dermoritz (18. Jan 2012)

Also in der Web.xml (auch in war, web-inf) kann ich wohl all das angeben, was ich auch in einer property-Datei angeben kann: als 
	
	
	
	





```
<context-param>
```
.
In einer entsprechenden context config datei in conf/catalina/host kann ich diese werte mit 
	
	
	
	





```
<parameter>
```
 überschreiben (es sei denn ich setze overwrite=false).

Mit JNDI kram kann man wohl ähnlich verfahren?!  
(Insgesamt hat diese context Datei noch eine Menge Sonderfunktionen wie logging (setze ich im Moment auch über Property). )

Den Vorteil den ich hier sehe, ist das man auf diese Werte sehr leicht und zum frühestmöglichen Zeitpunkt (Deployment) auf diese Werte zugreifen kann.

Was mir fehlt sind Beispiele für die Benutzung insbesondere für JNDI. Oder allgemeiner was kann ich mit der web.xml anstellen und wie ist die Entsprechnung in der context config.
Da müsste es doch Beipiele oder Tutorials zu geben?


----------

