2013-03-10 42 views
8

我有这个要求,我的webapp需要从Tomcat webapps目录以外的属性文件读取,例如从$ CATALINA_HOME/properties/myapp.properties中读取。我已经试过几件事情,但到目前为止没有运气如何在我的webapp上下文中读取Tomcat外部的属性文件

+0

文件是一个文件;给它一条路径并阅读它。 – 2013-03-10 03:32:45

+0

是的,这很容易做到。这并不是毫无意义,有理由。 – Rob 2013-03-10 03:40:19

+0

我认为该文件将被多个项目共享,我发布了一个答案,希望它能给你提示。 – OQJF 2013-03-10 03:46:33

回答

15

有多种方法。

  1. 使用环境变量
  2. 使用系统属性
  3. 将其设置为一个应用程序上下文帕拉姆在web.xml中

继承人的样本,显示Option 1 and Option 2

try { 

    //Use Any Environmental Variable , here i have used CATALINA_HOME 
    String propertyHome = System.getenv("CATALINA_HOME");   
    if(null == propertyHome){ 

     //This is a system property that is passed 
     // using the -D option in the Tomcat startup script 
     propertyHome = System.getProperty("PROPERTY_HOME"); 
    } 


    String filePath= propertyHome+"/properties/myapp.properties"; 

    Properties property = new Properties();   
    property.load(SystemTest.class.getClassLoader().getResourceAsStream(filePath)); 
} catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
+0

谢谢!我使用了系统属性“catalina.home”的第二种方法,这正是我需要的! – user2152898 2013-03-10 16:38:33

1

在我们的项目,我们的配置文件,将存储在tomcat的性能和代码中的VM参数的路径,使用System.getProperty(the parameter you config)来获取路径和读取属性文件,然后得到结果。

+0

是的,但在情况下Tomcat,如果我需要读取文件中的某个地方....实现ServletContextListener {}我有WAR相关的路径!是否有可能使用SPRING来获得WAR以外的路径? file:d:/my/path/toFile.log – AnNik 2015-03-05 09:04:57

0

我们已经把Web应用-config目录的路径,如下所示:

的/ var/lib中/ tomcat7/webapps/webapp/WEB-INF/classes/system-properties-location.properties

其中 web应用 =你的web应用文件的名称

这里有system-properties-location.properties文件的内容:

位置=在/ var/lib中/ tomcat7/webapp的-CONFIGS/webapp的

它指向一个外部位置来从中提取特定于环境的属性。通过这种方式,我们可以在开发中部署相同的战争,暂存和生产,而无需修改战争内容。

相关问题