Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to read a properties file outside my webapp context in Tomcat [duplicate]

I have this requirement that my webapp needs to read from a properties file outside the Tomcat webapps directory, for example from $CATALINA_HOME/properties/myapp.properties. I have tried several things but so far no luck

like image 457
Fernando Avatar asked Mar 10 '13 03:03

Fernando


2 Answers

There are multiple approaches .

  1. Use an Environmental variable
  2. Use a System Property
  3. Set it as a Application Context Param in Web.xml

Heres a sample ,that showsOption 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();
}
like image 73
Sudhakar Avatar answered Sep 20 '22 01:09

Sudhakar


I prefer the option to configure via Tomcat context descriptors.

These XML-documents are placed into the folder tomcat/conf/Catalina/<host>/*.xml

This refers to: Externalizing Tomcat webapp config from .war file

like image 44
Hartmut Pfarr Avatar answered Sep 19 '22 01:09

Hartmut Pfarr