Java – deploy with parameters * War file
•
Java
I have a web project with rest API I want to deploy five copies of it on the Tomcat server For example:
deploy test1.war -conf <path1> deploy test2.war -conf <path2> deploy test3.war -conf <path3>
Can I do this in Tomcat? Do you have any choice?
Solution
I decided to get the appropriate configuration file for the app at runtime
String path = MainApp.class.getProtectionDomain().getCodeSource().getLocation().getPath(); String decodedPath = java.net.URLDecoder.decode(path,"UTF-8"); // decodedPath - "D:/apache-tomcat-7.0.81/apache-tomcat-7.0.81/webapps/warname/WEB-INF/classes/com/gieseckedevrient/rsp/servertester/MainApp.class"
2) Parse the decoded path to get only "warname":
String parentName = ""; java.io.File parentFile = null; while (!"WEB-INF".equals(parentName)) { File file = new File(decodedPath); parentFile = file.getParentFile(); parentName = parentFile.getName(); decodedPath = parentFile.getAbsolutePath(); } String realWarName = parentFile.getParentFile().getName();
3) At Tomcat_ Create the file "setenv. Bat" in home} / bin / and insert this code into it (warname.config.file of warname.war and warname2.config.file of warname2.war):
set CATALINA_OPTS=-Dwarname.config.file=D:\app.properties -Dwarname2.config.file=D:\app2.properties
4) Use the following code to read the appropriate env variable:
String configFile = System.getProperty(realWarName + ".config.file"); // configFile - "D:\app.properties" for warname.war // configFile - "D:\app2.properties" for warname2.war
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码