Tomcat - 将数据库连接移出 server.xml
Tomcat - Move database connection out of server.xml
我在 tomcat 8,到目前为止,数据库连接(资源)已在 conf/server.xml
中配置
<Resource name="jdbc/onejndi"
auth="Container"
type="javax.sql.DataSource"
maxTotal="8"
maxIdle="30"
maxWaitMillis="10000"
username="sa"
password=""
driverClassName="org.hsqldb.jdbcDriver"
url="jdbc:hsqldb:file:c:/.../>
在应用程序META-INF/context.xml
中我们有相应的资源链接
<ResourceLink name="jdbc/onejndi" global="jdbc/onejndi"
type="javax.sql.DataSource"/>
现在我应该将数据库连接移出全局 server.xml。
将所有内容都放在应用程序 META-INF/context.xml
中是有问题的,因为应用程序将 运行 处于具有不同数据库的不同阶段,我们将无法为每个阶段提供特定的构建。
有想法、提示……吗?
保持现有全局server.xml
和/MATA-INF/context.xml
不变,在web应用程序的/WEB-INF/web.xml
中添加如下JNDI:
<resource-ref>
<res-ref-name>jdbc/onejndi</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
然后在你的应用程序代码中,你可以通过java:comp/env/jdbc/onejndi
访问数据库连接池。
这没有问题,因为 MATA-INF/context.xml
和 /WEB-INF/web.xml
中的 JNDI 名称 jdbc/onejndi
对于所有 environments.The 数据库连接属性(主机名、用户名、密码等)都是相同的.) 可以在 $CATALINA_BASE/conf/server.xml
中配置每个环境中的不同,而不是在 WAR 中打包。
这意味着您可以构建 WAR 一次并部署到不同的环境。
现在我自己找到了解决办法
我在 tomcat/conf/catalina/localhost
中放置了一个文件 context.xml.default
。
结构类似于标准 context.xml 文件,可能包含 server.xml.
中的资源标签
现在我既不需要更改基线文件 tomcat 也不需要在应用程序中写入数据库连接 META-INF/context.xml.
旁注:
- context.xml.default => 适用于所有应用程序
- myapp.xml => 仅适用于名称为 "myapp"
的应用程序
我在 tomcat 8,到目前为止,数据库连接(资源)已在 conf/server.xml
<Resource name="jdbc/onejndi"
auth="Container"
type="javax.sql.DataSource"
maxTotal="8"
maxIdle="30"
maxWaitMillis="10000"
username="sa"
password=""
driverClassName="org.hsqldb.jdbcDriver"
url="jdbc:hsqldb:file:c:/.../>
在应用程序META-INF/context.xml
中我们有相应的资源链接
<ResourceLink name="jdbc/onejndi" global="jdbc/onejndi"
type="javax.sql.DataSource"/>
现在我应该将数据库连接移出全局 server.xml。
将所有内容都放在应用程序 META-INF/context.xml
中是有问题的,因为应用程序将 运行 处于具有不同数据库的不同阶段,我们将无法为每个阶段提供特定的构建。
有想法、提示……吗?
保持现有全局server.xml
和/MATA-INF/context.xml
不变,在web应用程序的/WEB-INF/web.xml
中添加如下JNDI:
<resource-ref>
<res-ref-name>jdbc/onejndi</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
然后在你的应用程序代码中,你可以通过java:comp/env/jdbc/onejndi
访问数据库连接池。
这没有问题,因为 MATA-INF/context.xml
和 /WEB-INF/web.xml
中的 JNDI 名称 jdbc/onejndi
对于所有 environments.The 数据库连接属性(主机名、用户名、密码等)都是相同的.) 可以在 $CATALINA_BASE/conf/server.xml
中配置每个环境中的不同,而不是在 WAR 中打包。
这意味着您可以构建 WAR 一次并部署到不同的环境。
现在我自己找到了解决办法
我在 tomcat/conf/catalina/localhost
中放置了一个文件 context.xml.default
。
结构类似于标准 context.xml 文件,可能包含 server.xml.
现在我既不需要更改基线文件 tomcat 也不需要在应用程序中写入数据库连接 META-INF/context.xml.
旁注:
- context.xml.default => 适用于所有应用程序
- myapp.xml => 仅适用于名称为 "myapp" 的应用程序