web-dev-qa-db-ja.com

Tomcat 8-context.xmlはデータソースの環境変数を使用します

データソースを使用するTomcat 8プロジェクトがあります(以下を参照)

_<Resource auth="Container" 
          name="jdbc/JtmDS"  
          driverClassName="org.Apache.derby.jdbc.EmbeddedDriver" 
          type="javax.sql.DataSource" 
          username="xfer"
          password="xfer10" 
          url="jdbc:derby:/home/PUID/tm/control/JtmDB"                    
          initialSize="25"
          maxTotal="100" 
          maxIdle="30" 
          maxWaitMillis="10000"                                      
          removeAbandonedOnBorrow="true"
          removeAbandonedTimeout="20" />
_

これは完璧に機能します。

ただし、URLはハードコーディングされたパス_/home/PUID/tm/control/JtmDB_です

これが本番環境に入ると、パスのPUID部分は、多数のシステム間で異なります。環境変数が_export PUID=abcd_に設定されています。アプリケーションの残りの部分では、必要に応じて、System.getenv( )や_${env:PUID}_などを使用できます。

これらはすべて正常に動作します。

私の質問は非常に単純です:context.xmlのPUID値を環境変数から読み取ることができる変数にするにはどうすればよいですか?

11
thonnor

私は最終的にここで実際に何をする必要があるかを発見しました。

以下に示すように、実行時にJavaパラメータをTomcatに渡しました。

setenv.shに次のビットを追加しました

export PUID=abcd

Java_OPTS=-Dpuid=${PUID} 

次に、ここに示すように私のcontext.xmlを編集しました

<Resource auth="Container" 
          name="jdbc/JtmDS"  
          driverClassName="org.Apache.derby.jdbc.EmbeddedDriver" 
          type="javax.sql.DataSource" 
          username="xfer"
          password="xfer10" 
          url="jdbc:derby:/home/${puid}/tm/control/JtmDB"                    
          initialSize="25"
          maxTotal="100" 
          maxIdle="30" 
          maxWaitMillis="10000"                                      
          removeAbandonedOnBorrow="true"
          removeAbandonedTimeout="20" />

これで、Tomcatのインストールでこれが読み取られ、PUIDごとに異なるパスを使用できるようになります。

8
thonnor