读取应用程序配置文件的最佳实践是什么。Tomcat服务器中的哪些文件夹“在类路径上”。
我尝试将配置文件放入中,TOMCAT_HOME\conf但仍然无法从servlet中读取它。
TOMCAT_HOME\conf
尝试过使用(conf中有app.properties文件):
this.getClass().getClassLoader().getResourceAsStream("/app.properties");
我没有太多属性,也许10到15我认为这不会成为问题。我记得当我使用jboss时,这并不是那么重要。
在我的应用程序中,我还context.xml可以在其中指定数据库连接弹簧,是否可以在其中指定我的属性?还是这与tomcat一起工作?
context.xml
我想使自己的财产与战争/拆散战争分开。
更新资料
提出此问题的原因是因为我不知道我的应用程序将部署在哪里(在什么位置)
有很多不同的方法,但这取决于您的需求:
要加载一个属性文件$TOMCAT_HOME/conf的目录,你需要使用访问它java.io.File的对象,因为类加载器(如this.getClass().getClassLoader().getResourceAsStream(...)仅仅是能够从你的类路径加载文件(类)(下WEB- INF/classes,WEB-INF/lib或$TOMCAT_HOME/lib)。
$TOMCAT_HOME/conf
java.io.File
this.getClass().getClassLoader().getResourceAsStream(...)
WEB- INF/classes
WEB-INF/lib
$TOMCAT_HOME/lib
从Tomcat的config目录加载文件的最简单示例是:
File configDir = new File(System.getProperty("catalina.base"), "conf"); File configFile = new File(configDir, "myconfig.properties"); InputStream stream = new FileInputStream(configFile); Properties props = new Properties(); props.load(stream);
请注意,这种方法将使您的代码依赖于Tomcat(加载机制取决于Tomcat的系统属性是否可用的事实)。 我根本不建议 这样做,因此,如果 将属性文件移动到类路径中的文件夹中, 则应该能够以尝试的方式加载该文件,并且可以在任何容器中部署应用程序。
而且,您可以将属性配置为JNDI资源,但是访问它们会很麻烦。