- https://www.mulesoft.com/tcat/tomcat-configuration
- https://www.mulesoft.com/tcat/understanding-apache-tomcat
https://tomcat.apache.org/tomcat-8.5-doc/host-manager-howto.html https://tomcat.apache.org/tomcat-8.5-doc/config/host.html
https://tomcat.apache.org/tomcat-5.5-doc/config/host.html#Automatic Application Deployment
http://www.onjava.com/pub/a/onjava/2003/06/25/tomcat_tips.html
Removing the unpackWARs feature https://wiki.apache.org/tomcat/RemoveUnpackWARs
// unpackWARs="false" the
SevletContext.getRealPath();// method always returns null
https://docs.oracle.com/javaee/6/api/javax/servlet/ServletContext.html#getRealPath(java.lang.String)
getServletContext().getRealPath("/")
// returns '\' at the end when I run my project in Tomcat 7 whereas it is not
// working as such in Tomcat 8.
// For example,
// In Tomcat 7 it returns as "D:\Tomcat\webapps\project\"
// In Tomcat 8 it returns as "D:\Tomcat\webapps\project"
//At present the project is in production so, I am unable to change the code
//in every part(where i use getRealPath("/")). Is there a way/setting in
//tomcat level configuration to make it resolved.
//Additional information, Tomcat version : 8.0.14
tomcat implementation
https://bz.apache.org/bugzilla/show_bug.cgi?id=57556
// the servlet-2_3-fcs-docs for ServletContext.getRealPath():
// "This method returns null if the servlet container cannot translate the virtual path to a real path for any reason
// (such as when the content is being made available from a .war archive)."
config.getServletContext().getRealPath("/" + storageLocation);
getServletContext().getResource("files");
// Read the javadoc for ServletContext.getResource:
//"Returns a URL to the resource that is mapped to a specified path. The
//path must begin with a "/" and is interpreted as relative to the current
//context root."
ServletContext#getRealPath()
// may return null in case that the cms.war is running without being unpacked.
// So, I think it's better to use a default storage directory instead in this
// case under the current working directory (e.g, "./repository_storage").
In the above example we use getClass().getResource() , this method tries to read the resource file from the root path of the build folder (i.e. /bin, /build, /WEB-INF/classes) in case the file name starts with forward slash “/”, otherwise it tries to read the file from the same package of the class itself (i.e. com.programmer.gate).
P.S: When defining the file name in the java class, make sure to take the full path of the generated file under build directory including all subfolders, so if example.xml is generated under /bin/xml/example.xml then the file name should be defined as /xml/example.xml.