在何处/如何为Tomcat .war文件设置配置资源

Jas*_*n S 7 java configuration tomcat

我有一个.war文件的源代码树,我需要修改,以便我可以添加一些特定于应用程序的配置信息(在这种情况下是一个jdbc连接字符串,但我可能有其他类似属性的资源).在哪里放置配置信息以及如何从Servlet中访问它的最佳实践是什么?

我猜这个Tomcat配置引用与它有关,但当我尝试阅读时,我的眼睛茫然.

leo*_*onm 5

对于Web应用程序配置,您可以将配置放在类路径的某个位置.然后你可以使用getResourceAsStream从你的应用程序中获取它,或者你更喜欢Spring:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="locations">
    <list>
      <value>classpath:my-config.properties</value>
    </list>
  </property>
</bean>
Run Code Online (Sandbox Code Playgroud)

有许多地方可以将属性放在Tomcat的类路径中.按顺序看:

/WEB-INF/classes of your web application 
/WEB-INF/lib/*. jar of your web application 
$CATALINA_HOME/common/classes 
$CATALINA_HOME/common/endorsed/*.jar 
$CATALINA_HOME/common/i18n/*.jar 
$CATALINA_HOME/common/lib / *. jar 
$CATALINA_BASE/shared/classes 
$CATALINA_BASE/shared/lib/*.jar  
Run Code Online (Sandbox Code Playgroud)

例如,如果你把my-config.properties都在一个.jar文件和WEB-INF/classes中的一个在WEB-INF/classes目录将被使用.您可以使用此机制来默认测试配置并覆盖prod服务器上的prod配置.


Mat*_*nit 4

对于 JDBC 连接字符串的特定情况,我建议使用 Tomcat 管理的连接池。您可以在此处阅读有关执行此操作的更多信息: http://tomcat.apache.org/tomcat-5.5-doc/jndi-datasource-examples-howto.html

这是更多的工作,但我认为从长远来看,它会对你有更好的帮助。