代码之家  ›  专栏  ›  技术社区  ›  jW.

配置Tomcat以使用属性文件加载DB连接信息

  •  31
  • jW.  · 技术社区  · 16 年前

    创建从属性文件读取配置参数的Tomcat部署的公认做法是什么?

    如果能够交付WAR文件并指定客户端只需要在特定目录中创建或编辑属性文件,那就太好了。这是一种有规律的做事方式吗?还有比这更好的方法吗?

    3 回复  |  直到 16 年前
        1
  •  15
  •   Adam Batkin    16 年前

    我们通常通过提供一个WAR和一个上下文XML文件来分发Web应用程序,该文件被放入您的 tomcat/conf/Catalina/localhost 目录,并可以从任何路径加载webapp。有一份参考文件 here . 这具有以下优点:

    • 上下文参数可以在此处配置并由webapp读取
    • WAR实际上可以存在于文件系统的任何地方,这意味着如果Tomcat升级,只需要将这个配置文件移动到新的Tomcat安装中,web应用程序和任何其他文件都可以保留在原来的位置

    如果确实需要属性文件,可以在指向属性文件的上下文XML文件中设置参数,在 ServletContextListener 然后读入属性文件。

        2
  •  9
  •   Steve K    16 年前

    1. 让客户端在中创建连接池 GlobalNamingResources 使用我们同意的资源名称。数据库驱动程序需要位于Tomcat的类路径中。
    2. ResourceLink 链接到步骤1中配置的连接池。

    这比直接修改context.xml连接信息要提前一点,但随着时间的推移,它应该会有回报。开发服务器的GlobalNamingResources指向开发,测试服务器指向测试等。然后,可以将相同的WAR文件复制到每个服务器,而无需编辑任何内容。

    这不是使用属性文件,但我认为它实现了相同的目标。允许用户/客户设置数据库连接信息。

    GlobalNamingSource的示例:

    <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"/>
    

    war文件中的context.xml示例:

    <Context path="/MyWebApp" docBase="MyWebApp" debug="5" reloadable="true">
        <ResourceLink name="jdbc/dbconnection" global="jdbc/dbconnection" 
              type="javax.sql.DataSource"/>
    </Context>
    
        3
  •  9
  •   ZZ Coder    16 年前

    <Context docBase="/server/app.war"
        swallowOutput="true" unpackWAR="false" useNaming="false">
    
        <Parameter name="config-file" value="/config/db.properties" override="true" />
    </Context>