Search code examples
windowstomcatmultiple-instancescatalina

Tomcat multiple instances simultaneously


I am trying to run multiple instances of Tomcat, but even after configuring different ports for listening and shutting down the second instance, it keeps trying to listen on 8080 (configured for 8081). I read that I have to set a different value for CATALINA_BASE. From all the articles there are online, none of them actually show in which file this variable can be set.

Where and how can I set CATALINA_BASE for my Tomcat instance in C:\apache-tomcat-7.0.39


Solution

  • The easiest way I have run two copies of Tomcat involved the following steps (I was trying to run two distinct versions of tomcat, 6 and 7):

    • Establish 2 copies of tomcat in different folders (if they are different versions then this is easy, if they are the same version then you will need be distinguished in some other way. There are a lot of files that Tomcat creates to manage it so running two instances with the same work directory likely isn't possible)

    • Change the following ports that tomcat is listening to in server.xml

      • <Connector port="8080"> <- This is the port that tomcat uses to respond to HTTP requests
      • <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> <- this defines two ports, one for the AJP connector (used if you are using tomcat behind an Apache or IIS server) and the port used for HTTPS traffic
      • <Server port="8005" shutdown="SHUTDOWN"> <- this is the port that Tomcat uses to respond to SHUTDOWN events

    Finally, if you are running this as a Windows service you will need to establish different service names for each instance (you can do this during setup, the default for Tomcat 7 is tomcat7). Once Tomcat is running all of it's configuration fields use relative paths so you don't need to touch CATALINA_BASE