我有一个使用数据源的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" />
这非常有效。
然而,网址是硬编码路径/home/PUID/tm/control/JtmDB
当它投入生产时,路径的PUID部分将在众多系统中不同。
我有一个环境变量集export PUID=abcd
该应用程序的其余部分可以在适当的时候使用System.getenv( )
或${env:PUID}
之类的内容。
这些都很好。
我的问题非常简单: 如何在context.xml中创建一个可以从环境变量中读取的变量?
答案 0 :(得分:5)
我终于发现了我在这里需要做的事情......最后非常简单。
我在运行时将一个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使用不同的路径。