# Konfiguration ausserhalb vom WAR-File



## reibi (8. Okt 2010)

Hallo

Um Fremdsysteme wie DB-URLs und LDAP-URLS usw zu konfigurienen sollte man die Konfiguration in ein Property-File auslagern. Wie kann ich denn meine Config ausserhalb vom WAR-File lagern und anziehen?

Gruss


----------



## fastjack (8. Okt 2010)

Properties-Datei per File nachladen, oder besser, über JNDI die Datasources und Co ansprechen, die man dann hoffentlich im Endsystem separat deployen kann.


----------



## reibi (8. Okt 2010)

fastjack hat gesagt.:


> Properties-Datei per File nachladen, oder besser.. .


Will was leichtgewichtiges haben ... Fett bin ich selbst schon genug.

Also Wie machst DU das mit dem "File nachladen"

Gruss


----------



## fastjack (8. Okt 2010)

Du kannst eine Properties-Datei in jBoss z.b. ins Data-Verzeichniss deployen. In jBoss hat man folgende als Beispiel Möglichkeit auf das Data-Verzeichnis zu kommen: 


```
org.jboss.system.server.ServerConfig sc = org.jboss.system.server.ServerConfigLocator.locate();
return sc.getServerDataDir().getAbsolutePath();
```

In Tomcat gibt es die Möglichkeit das BaseDir-abzufragen, daraus kannst Du dann einen ermitteln, der zu dieser Datei in deiner Anwendung führt.

Properties einzuladen ist simpel:

```
InputStream is = ...
Properties p = new Properties();
p.load(is);
```

Aber wie gesagt, bei Datenbankverbindungen würde ich mit DataSources und JNDI arbeiten. Diese kannst Du in Tomcat/jBoss sehr einfach separat konfigurieren.


----------



## reibi (8. Okt 2010)

Hi schneller Jack


fastjack hat gesagt.:


> InputStream is = ...



Schreib mir mal bitte was anstatt der Punkte steht.

Danke und Gruss


----------



## fastjack (8. Okt 2010)

Mensch Reibi 

File f wäre das erzeugte File-Objekt, das Du Dir entsprechend dem Standort Deiner Properties-Datei erzeugen mußt.


```
File f = new File("./conf/myprops.properties"); // einfaches relatives Beispiel
//File f = new File(sc.getServerDataDir().getAbsolutePath(), "myprops.properties"); // einfaches jBoss-Beispiel
InputStream is = null;
Properties p = new Properties();
try {
    is = new FileInputStream(f);
    p.load(is);
    // System.getProperties().putAll(p); // Beispiel um die Props als Systemprops anzulegen
} catch (IOException e) {
    throw e;
} finally {
    if (is != null) {
        is.close();
    }
}
```


----------



## reibi (8. Okt 2010)

fastjack hat gesagt.:


> File f = new File("./conf/myprops.properties"); // einfaches relatives Beispiel



Und er Pfad ? Das is das Problem ... is das im $CATALINA_HOME oder wo?

Gruss


----------



## fastjack (8. Okt 2010)

Ne. Ich denke Du kannst mal ServletContext.getRealPath("RELATIVER PFAD ZU PROPS") ausprobieren.


----------

