Search This Blog

Wednesday 3 February 2021

Tomcat directory structure and properties

 Directories and Files

These are some of the key tomcat directories:

/bin - Startup, shutdown, and other scripts. The *.sh files (for Unix systems) 

/conf - Configuration files and related DTDs. The most important file in here is server.xml. It is the main configuration file for the container.

/logs - Log files are here by default.

/webapps - This is where we deploy the web applications.

CATALINA_HOME & CATALINA_BASE

CATALINA_HOME: Represents the root of your Tomcat installation, for example /home/tomcat/apache-tomcat-9.0.10 

CATALINA_BASE: Represents the root of a runtime configuration of a specific Tomcat instance. If you want to have multiple Tomcat instances on one machine, use the CATALINA_BASE property

If you set the properties to different locations, the CATALINA_HOME location contains static sources, such as .jar files, or binary files. The CATALINA_BASE location contains configuration files, log files, deployed applications, and other runtime requirements.

Why Use CATALINA_BASE

By default, CATALINA_HOME and CATALINA_BASE point to the same directory. Set CATALINA_BASE manually when you require running multiple Tomcat instances on one machine. Doing so provides the following benefits:

  • Easier management of upgrading to a newer version of Tomcat. Because all instances with single CATALINA_HOME location share one set of .jar files and binary files, you can easily upgrade the files to newer version and have the change propagated to all Tomcat instances using the same CATALIA_HOME directory.
  • Avoiding duplication of the same static .jar files.
  • The possibility to share certain settings, for example the setenv shell or bat script file (depending on your operating system).

Contents of CATALINA_BASE

Before you start using CATALINA_BASE, first consider and create the directory tree used by CATALINA_BASE. Note that if you do not create all the recommended directories, Tomcat creates the directories automatically. If it fails to create the necessary directory, for example due to permission issues, Tomcat will either fail to start, or may not function correctly.

Consider the following list of directories:

  • The bin directory with the setenv.sh, setenv.bat, and tomcat-juli.jar files.
  • The lib directory with further resources to be added on classpath.
  • The logs directory for instance-specific log files.
  • The webapps directory for automatically loaded web applications.
  • The work directory that contains temporary working directories for the deployed web applications.
  • The temp directory used by the JVM for temporary files.

It is recommended not to change the tomcat-juli.jar file. However, in case you require your own logging implementation, you can replace the tomcat-juli.jar file in a CATALINA_BASE location for the specific Tomcat instance.

It is also recommend you copy all configuration files from the CATALINA_HOME/conf directory into the CATALINA_BASE/conf/ directory. In case a configuration file is missing in CATALINA_BASE, there is no fallback to CATALINA_HOME. Consequently, this may cause failure.

    The CATALINA_BASE property is an environment variable. You can set it before you execute the Tomcat start script, for example:

    • On Unix: CATALINA_BASE=/tmp/tomcat_base1 bin/catalina.sh start


    No comments: