Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Configure Tomcat to use properties file to load DB connection information

What are the accepted practices for creating a Tomcat deployment that reads configuration parameters from a properties file?

It would be nice to be able to deliver a WAR file and specify that the client need only create or edit a properties file in a specific directory. Is this a somewhat regular way of doing things? Is there a better approach than this?

like image 756
jW. Avatar asked Sep 04 '09 18:09

jW.


People also ask

Where do I put properties file in Tomcat?

The best place to put a properties file would be in the webapp's WEB-INF/classes directory, which is part of the application classpath.

How do you read Properties filed outside war?

Provide the file name using context param or java system parameter. But, it is again property file location is war dependent. You should change war file to change propert file location. If i am correct the requirement was to change the props in the file , not the file as such.


1 Answers

We often distribute webapps by providing a WAR, and a Context XML file, which gets placed into your tomcat/conf/Catalina/localhost directory, and can load the webapp from any path. There is a reference document here. This provides the following advantages:

  • Context parameters can be configured here and read by the webapp
  • DataSources can be defined and configured here
  • The WAR can actually live anywhere on the filesystem, which means that if Tomcat gets upgraded, only this single configuration file needs to be moved to the new Tomcat install, the web application and any other files can stay where they are

If you really want a properties file, you can set a parameter in the context XML file pointing to your properties file, read the parameter in a ServletContextListener and then read in the properties file.

like image 96
Adam Batkin Avatar answered Oct 08 '22 00:10

Adam Batkin