Java 从tomcat读取属性
读取应用程序配置文件的最佳实践是什么。tomcat服务器中的哪些文件夹“在类路径上” 我试图将配置文件放在Java 从tomcat读取属性,java,tomcat,properties,Java,Tomcat,Properties,读取应用程序配置文件的最佳实践是什么。tomcat服务器中的哪些文件夹“在类路径上” 我试图将配置文件放在TOMCAT\u HOME\conf中,但仍然无法从servlet中读取它 已尝试使用此文件(conf中有app.properties文件): 我没有太多的财产也许10-15我想这不会是问题。我记得当我使用jboss时,这个问题并没有那么严重 在我的应用程序中,我还在context.xml中指定了DB connection spring,我可以在其中指定我的属性吗?或者这是如何与tomcat
TOMCAT\u HOME\conf
中,但仍然无法从servlet中读取它
已尝试使用此文件(conf中有app.properties文件):
我没有太多的财产也许10-15我想这不会是问题。我记得当我使用jboss时,这个问题并没有那么严重
在我的应用程序中,我还在context.xml
中指定了DB connection spring,我可以在其中指定我的属性吗?或者这是如何与tomcat一起工作的
我想把我的财产与我的战争/未包装的战争分开
更新
问这个问题的原因是因为我不知道我的应用程序将部署在哪里(在什么位置)据我所知,您也可以在tomcat中配置
数据源
在此之后,您可以在应用程序中使用数据源。将您的文件放入WEB应用程序的WEB-INF/类中。这是默认的类路径目录conf
if仅适用于Tomcat内部组件。有许多不同的方法,但这取决于您的需要:
要从$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资源,但是访问它们会非常麻烦。虽然它可能是一个PITA,但它也可能是一个您不知道它将部署在哪里的功能。那么您就不能“耦合”自己了
根据Java堆栈的其他部分,最好的方法通常独立于Tomcat
new ClassPathResource("**/myFile.properties")
或者,如果使用Java配置,另一个示例:
@PropertySource("classpath:META-INF/MyWeb.properties")
在纯Java中,您可以说:
InputStream stream = loader.getResourceAsStream(resourceName);
如果loader是ClassLoader的一个实例,而不是指特定配置文件的位置,我会使用JNDI绑定配置,使应用程序仅依赖于配置数据和Java EE标准。我可以看到两个选项:
>P>如果您的属性文件中只有中等数量的配置条目,则考虑通过它们在应用程序中通过JNDI进行访问并访问它们。
或者,假设您想将属性保存在一个单独的属性文件中,您还可以创建一个bean来表示属性、一个工厂(使用属性文件初始化bean),并将其作为一个属性连接到JNDI。
这样,用户甚至可以定期重新读取属性文件,而无需重新启动应用程序、在各种配置源或类似的其他需求之间切换
使用此配置的每个web应用程序都必须在其web.xml
中包含引用配置bean(或引用每个环境条目,如果使用了选项1)。apache-tomcat-7.0.78\conf文件夹中的add.properties文件
File configDir=新文件(System.getProperty(“catalina.base”),“conf”);
File configFile=新文件(configDir,“dashboardiframes.properties”);
InputStream=新文件InputStream(configFile);属性=新属性();
加载(流)
感谢您的回复。我不需要数据源,我已经配置了该部分,我需要其他属性。然后,我想您正在做的一切都很好。无论应用程序部署在tomcat目录中的何处,提取文件的结构都是相同的,因此如果app.properties与deployable一起正确提供,则不会导致错误ny问题。这不是应用程序属性应该放在的位置。我知道,但如果他想把它们放在那里,这取决于他,我会给他一些线索,让他获取它们,并建议将其移动到一个classpath可用文件夹中
InputStream stream = loader.getResourceAsStream(resourceName);