2016-04-10 46 views
5

Przygotowuję wspólny plik standalone-full.xml dla wszystkich środowisk serwerowych i dlatego muszę mieć zmienne dla adresów URL bazy danych (i takich), zamiast twardego kodowania ich.Jak wykorzystać zmienne w pliku konfiguracyjnym Wildfly?

Jedna taka sekcja w pliku konfiguracyjnym może wyglądać następująco:

<datasource jta="true" jndi-name="java:/somename" pool-name="somename" enabled="true" use-ccm="false"> 
       <connection-url>jdbc:mysql://${SOMENAME_DB_URL}</connection-url> 
       <driver-class>com.mysql.jdbc.Driver</driver-class> 
       <driver>mysql</driver> 
       <pool> 
        <min-pool-size>5</min-pool-size> 
        <max-pool-size>15</max-pool-size> 
       </pool> 
       <security> 
        <user-name>${DB_USERNAME}</user-name> 
        <password>${DB_PASSWORD}</password> 
       </security> 
       <validation> 
        <validate-on-match>false</validate-on-match> 
        <background-validation>false</background-validation> 
       </validation> 
       <statement> 
        <share-prepared-statements>false</share-prepared-statements> 
       </statement> 
      </datasource> 

Jednak po uruchomieniu serwera z tego pliku konfiguracyjnego po prostu rzuca „Nie można rozwiązać wyrażenie” błąd dla wszystkich tych sekcjach.

Próbowałem oddanie zmienne w /etc/environment, a także w pliku .jbossclirc w /bin wykorzystaniem set DB_USERNAME=mydbusername, ale bezskutecznie.

Jak widać, szukam tu trochę ciemności, ponieważ nie udało mi się znaleźć odpowiedniej dokumentacji, jak to zrobić. Nie jestem nawet pewien, czy to rzeczywiście możliwe. Każda pomoc jest bardzo doceniana.

Odpowiedz

4

Powinieneś używać właściwości systemu Java zamiast zmiennych środowiskowych.

Możesz również przekazać te właściwości jako argumenty -D do standalone.sh, np.

bin/standalone.sh -DDB_USERNAME=me -DDB_PASSWORD=secret 

Alternatywnie, można zdefiniować swoje właściwości w pliku właściwości i przekazać, że do skryptu startowego z -P opcji:

bin/standalone.sh -P database.properties 
0

Czy w ten sposób zastępowane standardowe właściwości Wildfly działają w ten sposób? Na przykład jboss.http.port z standalone.xml

<socket-binding name="http" port="${jboss.http.port:8080}"/> 

Jeden possibilty jest wywołanie standalone.sh -Djboss.http.port=8081. Następnie port http Wildfly powinien być na 8081.

Powinien również działać dla własnych zmiennych.