Announcement

Collapse
No announcement yet.

Parametrisierte context.xml

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Parametrisierte context.xml

    Ich würde gerne die context.xml eines Web-Projekts parametrisieren. Hintergrund ist, dass das Projekt auf einem Entwicklungs- und auf einem Produktivserver deployed werden soll, die beiden Versionen aber mit verschiedenen Datenbanken arbeiten sollen. In der context.xml wird prinzipiell die DB-Verbindung konfiguriert. Darin sollen nun aber Variablen/Parameter/Platzhalter vorkommen, die durch einen Wert, der auf dem Server definiert wird, ersetzt werden. Ich habe bereits ein wenig gesucht und folgendes ausprobiert:


    Ich habe die Zeile

    Code:
    DBVAL=mydb_dev
    in die Datei catalina.properties hinzugefügt.

    In der context.xml wird jetzt folgender Realm definiert:

    Code:
    <Realm className="org.apache.catalina.realm.JDBCRealm" 
                    driverName="org.postgresql.Driver" 
                    connectionURL="jdbc:postgresql://myserver:5432/${DBVAL}" 
                    connectionName="xxx" connectionPassword="yyy" 
                    userTable="users" userRoleTable="roles" 
                    userNameCol="name" userCredCol="pw" roleNameCol="role" 
                    digest="MD5" />
    In der Logdatei finde ich jedoch folgendes:
    org.postgresql.util.PSQLException: FATAL: database "${DBVAL}" does not exist

    Offensichtlich wird ${DBVAL} nicht ersetzt, so wie ich es erwartet hätte. Wie kann ich ein solches Verhalten erreichen?

  • #2
    Garnicht

    Hallo a806950,

    Offensichtlich wird ${DBVAL} nicht ersetzt, so wie ich es erwartet hätte. Wie kann ich ein solches Verhalten erreichen?
    Garnicht, die einzigen Werte, die bei context.xml dynamisch sind, sind die Umgebungsvariablen $CATALINA_HOME und $CATALINA_BASE. Und diese werden nur bei relativen Pfadangaben benutzt.

    Damit Du den DBVAL nicht händisch ändern musst, kannst Du auf ein Build-Tool wie maven zurück greifen und hier mit Buildprofilen arbeiten. Oder Du definierst Den Realm statt im Context in der server.xml.

    Gruß ngomo
    http://www.winfonet.eu

    Comment


    • #3
      Ich hatte gelesen, dass man in catalina.properties selbst Umgebungsvariablen definieren kann. Für den Realm müsste ich einen Context in der server.xml anlegen. Dann können unsere Entwickler nicht mehr über den Web-Manager deployen. Außerdem sollen laut Dokumentation Contexte nur noch in der context.xml definiert werden.

      Comment

      Working...
      X