Below is the approach that can be used for externalize
ApplicationResource properties file in Tomcat 7 & 9.
Steps:
1. The
change needs to be done in
<tomcat_installation_path>/conf/Catalina/localhost/<APP_NAME>.xml
(where data sources are defined)
2. E.g.
ApplicationResource.properties file is kept in
D:/AppProperties/TestApp path
3. For
Tomcat 7.x , need to add the folder in classpath by using below tag under
<Context> tag
a.
<Resources
className="org.apache.naming.resources.VirtualDirContext"
extraResourcePaths="/WEB-INF/classes=D:/AppProperties/TestApp"/>
4. For
Tomcat 8.x/9.x, you can provide the properties file instead of directory
itself, by using below tag under <Context> tag
a. <Resources>
<PreResources className="org.apache.catalina.webresources.FileResourceSet"
base="D:/AppProperties/TestApp/ApplicationResource.properties"
webAppMount="/WEB-INF/classes/ApplicationResource.properties" />
</Resources>
b. Alternatively, to configure directory the below one can be used
<Resources>
<PreResources className="org.apache.catalina.webresources.DirResourceSet"
base="D:/AppProperties/TestApp"
webAppMount="/WEB-INF/classes"/>
</Resources>
<PreResources className="org.apache.catalina.webresources.FileResourceSet"
base="D:/AppProperties/TestApp/ApplicationResource.properties"
webAppMount="/WEB-INF/classes/ApplicationResource.properties" />
</Resources>
b. Alternatively, to configure directory the below one can be used
<Resources>
<PreResources className="org.apache.catalina.webresources.DirResourceSet"
base="D:/AppProperties/TestApp"
webAppMount="/WEB-INF/classes"/>
</Resources>
5. This will load the properties file from the external location; hence
remove the properties file from WEB-INF/classes
4 comments:
Thank you. Very useful article.
Great post. Thanks for sharing a valuable information.....
Angularjs Training in Bangalore
Angularjs classes in pune
Angularjs Training in hyderabad
Angularjs Training in Gurgaon
Angularjs Training in delhi
Thank you, saved my day
I've been looking for this solution for a couple of years. Thank you!
Post a Comment