Tomcat - 将数据库连接移出服务器.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"/>

现在我应该将数据库连接移出全局服务器.xml。 将所有内容都放在应用程序中META-INF/context.xml是有问题的,因为应用程序将使用不同的数据库在不同的阶段运行,我们将无法为每个阶段提供特定的构建。

有一个想法,一个提示,...?

现在我自己找到了解决方案。

我把一个文件context.xml.default放在tomcat/conf/catalina/localhost里面。 结构类似于标准上下文.xml文件,可能包含资源标签,如在服务器.xml中。

现在,我既不需要更改基线tomcat的文件,也不需要在应用程序META-INF/context.xml中写入数据库连接。

旁注:

  • context.xml.default => 适用于所有应用程序
  • myapp.xml => 仅适用于名为"myapp">
  • 的应用程序

保持现有的全局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访问数据库连接池。

这没有问题,因为 JNDI 名称jdbc/onejndiMATA-INF/context.xml/WEB-INF/web.xml对于所有环境都是相同的。每个环境中不同的数据库连接属性(主机名、用户名、密码等(可以在未打包在 WAR 中的$CATALINA_BASE/conf/server.xml中进行配置。

这意味着您可以构建一次 WAR 并部署到不同的环境。

相关内容

  • 没有找到相关文章

最新更新