Deploying a WAR File

Another major way of deploying a web application into Tomcat is to deploy the application packed into a WAR file. WAR files are described in detail in the Java Servlet Specification.

With Tomcat, when you deploy your WAR file, you must decide whether to serve your webapp after unpacking the WAR file or while it is still packed into a WAR file. Both ways are supported. By default, when Tomcat deploys a WAR file, the first thing it does is unpack the contents of the WAR file into a directory of the same name minus the .war extension, and then serves the files from the unpacked directory.

For example, if your WAR file is named suitcase.war, Tomcat would unpack the contents of suitcase.war into a directory named suitcase, and then the files that are served as part of the webapp will be read from the suitcase directory on disk, not from the WAR file. You may turn off the automatic unpacking behavior by setting unpackWARs="false" on your Host element in server.xml. With it set to false, Tomcat will serve your webapp's files right from the packed WAR file itself.

There are two ways to configure Tomcat to recognize and start your web application when you first deploy it as a WAR file:

server.xml context deployment

Add a <Context> element to the server.xml file and restart Tomcat.

Context XML fragment file deployment

Add a new context XML fragment file in Tomcat's CATALINA_HOME/conf/[EngineName]/[Hostname] directory tree, or create it as your web application's WEB-INF/context.xml ...

Get Tomcat: The Definitive Guide, 2nd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.