# Alternative zu Properties/ Zugriff außerhalb der Locale



## spoofs (11. Dez 2006)

Hallo,

also eigentlich suche ich keine Alternative sonder nur eine Möglichkeit außerhalb des Class-Ordners auf mein Bundle zuzugreifen. Ich will in meiner Webanwendung unter Web-INF einen Config-Ordner erstellen wo eine Datei liegt die keys zu bestimmten Systempfaden mappt. Also eine ganz normale Properties-Datei. Wenn die Anwendung später mal läuft soll es anderen die für die Wartung/Admin zuständig sind möglich sein ggf. die Pfade die ich in der Properties verwalte zu ändern oder anzupassen.
Ich finde es etwas umständlich die Leute dann ins Class-Verzeichnis zu schicken und dort direkt an der Datei rumzufuseln, daher die Idee mit dem separaten Config-Ordner.

Momentan liegt besagte Properties-Datei noch im Classes-Verzeichnis und läßt sich wunderbar mit ResourceBundle.getBundle(...) aufrufen. Dies geht aber nur wenn die Properties im classes-Verzeichnis ist, sofern ich das richtig verstanden habe.

Gibt es eine Möglichkeit auch außerhalb des classes-Ordners zuzugreifen? Die Idee der Properties-Datei würde ich gerne beibehalten...also key mappt value...
Wie sieht dann ein solcher Zugriff aus?

Ich hoffe Ihr könnt mir helfen...
Gruß,
spoofs


----------



## KSG9|sebastian (11. Dez 2006)

getServletContext().getRealPath("WEB-INF/blah/blub/config.properties") müsste gehen..natürlich nur in nem Servlet. Aber den Pfad vom Servlet in ne Bean oder so zutransportieren ist ja nicht wirklich das Problem...


----------



## spoofs (11. Dez 2006)

schon klar, aber in welchen Datentyp kann ich das einlesen bzw. wie? In mit ResourceBundle wohl nicht mehr oder?

gruß,spoofs


----------



## spoofs (12. Dez 2006)

Hallo nochmal,

naja so einfach ist es doch nicht, denn ich arbeite nicht mit Servlets, zumindest nicht bewußt, denn die Anwendung läuft in JSF...ich habe also nur Beans und tiefere Klassen...irgendeine Idee?
Sonst muß ich die Leute doch in den Classes-Ordner schicken...

Gruß,
spoofs


----------



## KSG9|sebastian (12. Dez 2006)

ein Ressourcefile ist (genauso aufgebaut) wie ne Properties-Datei.
Ist doch immer key=value, mehr nicht.
Da gibt es schon Möglichkeiten. Z.b. könntest du vom Standartfacesservlet erben, dort hast du dann den Request zur Verfügung. Beim ersten Aufruf des Servlets kannst du den Pfad ermitteln und der Anwendung zentral zur Verfügung stellen, z.B. über ne Statische Klasse oder ähnliches.
Aber du bekommst doch bei nem Faces-Command auch ein Environment wo du auf den Httprequest kommst, oder?


----------



## KSG9|sebastian (12. Dez 2006)

Ganz vergessen, so kommst du an den ServletContext ran:

```
(ServletContext)FacesContext.getCurrentInstance().getExternalContext().getContext();
```

Damit kannst du dann auch den "richtigen" Pfad zur Bundle/Properties-Datei rausbekommen.


----------



## spoofs (13. Dez 2006)

danke, es funktioniert super   
Lade das ganze dann in eine Properies-Objekt.
Das schöne (naja) ist ja bei JSF das man sich den Context so wie du es beschrieben hast, an jeder Stelle immer und zu jeder Zeit holen kann. 
Wie würde das ganze aussehen wenn ich z.B. mit Struts arbeiten würde? Wäre mal interessant für ein anderes Projekt was ich gerade verfolge.
Der FacesContext gehört doch zu JSF oder irre ich mich da?
Bei meinen Struts-Projekt hab ich auch keine selbstgeschriebenen Servlets, wie würde ich also da an den "realPath" kommen?

Gruß,
spoofs


----------



## KSG9|sebastian (13. Dez 2006)

Bei Struts kommst du glaub ich über die Action da ran..bin mir aber nicht sicher. Sonst bleibt eben oft nur die möglichkeit das Standart-Servlet zu überschreiben und Webapp-abhängige Werte in einer zentralen Klasse abzulegen.


----------

