将 Tomcat 配置为使用属性文件加载数据库连接信息
2022-09-01 09:58:32
创建从属性文件中读取配置参数的 Tomcat 部署的可接受做法是什么?
如果能够提供 WAR 文件并指定客户端只需在特定目录中创建或编辑属性文件,那就太好了。这是一种有点常规的做事方式吗?有没有比这更好的方法?
创建从属性文件中读取配置参数的 Tomcat 部署的可接受做法是什么?
如果能够提供 WAR 文件并指定客户端只需在特定目录中创建或编辑属性文件,那就太好了。这是一种有点常规的做事方式吗?有没有比这更好的方法?
我们通常通过提供 WAR 和 Context XML 文件来分发 Web 应用程序,该文件会放入您的目录中,并且可以从任何路径加载 web 应用程序。这里有一个参考文件。这具有以下优点:tomcat/conf/Catalina/localhost
如果确实需要属性文件,可以在上下文 XML 文件中设置一个指向属性文件的参数,在 ServletContextListener 中读取该参数,然后在属性文件中读取。
我们处理这个问题的方式:
这比简单地改变上下文更需要一些前期工作.xml直接连接信息,但随着时间的推移,它应该会得到回报。开发服务器将设置其指向开发的GlobalNamingResources,以及指向测试的测试服务器等。然后,可以将相同的 WAR 文件复制到每个服务器,而无需编辑任何内容。
这不是使用属性文件,但我认为它实现了相同的目标。允许用户/客户设置数据库连接信息。
全球命名资源示例:
<Resource name="jdbc/dbconnection" auth="Container"
type="javax.sql.DataSource" driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@127.0.0.1:1546:SID"
username="scott" password="tiger" maxActive="8" maxIdle="4"
validationQuery="select 1 from dual"
testOnBorrow="true"/>
战争文件中的上下文.xml示例:
<Context path="/MyWebApp" docBase="MyWebApp" debug="5" reloadable="true">
<ResourceLink name="jdbc/dbconnection" global="jdbc/dbconnection"
type="javax.sql.DataSource"/>
</Context>