データソースを使用する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値を環境変数から読み取ることができる変数にするにはどうすればよいですか?
私は最終的にここで実際に何をする必要があるかを発見しました。
以下に示すように、実行時に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ごとに異なるパスを使用できるようになります。