tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Christopher Schultz <>
Subject Re: Tomcat Service configuration for running sites
Date Thu, 03 Feb 2011 20:49:43 GMT
Hash: SHA1


On 2/3/2011 2:10 AM, Conway Liu wrote:
> Tomcat service is installed [in]:
> C:\Tomcat\

> My Java web application is placed in:
> C:\WebApp1\
> With subfolders:
> C:\WebApp1\bin\...   (contains tomcat5.exe and tomcat5w.exe and many .sh and 
> .bat files as we previously start this site using the startup.bat before I 
> installed the Tomcat service)
> C:\WebApp1\common\...
> C:\WebApp1\conf\...   (contains catalina.policy,, 
> context.xml,, server.xml, server-minimal.xml, 
> tomcat-users.xml, web.xml specifically used by this website)
> C:\WebApp1\conf\Catalina\
> C:\WebApp1\logs\
> C:\WebApp1\server\
> C:\WebApp1\server\lib\...   (many .jar files in there, e.g. catalina.jar)
> C:\WebApp1\shared\...
> C:\WebApp1\sslcerts\...   (SSL certificates in here)
> C:\WebApp1\webapps\ROOT\...   (This is the root of the website. E.g. default.jsp 
> sits in here)
> C:\WebApp1\webapps\ROOT\WEB-INF\classes\...   (The java classes we created to be 
> used for the website to interact with back-end database)
> C:\WebApp1\webapps\ROOT\WEB-INF\lib\...   (some 3rd party .jar files 
> specifically used by this website)
> C:\WebApp1\webapps\ROOT\WEB-INF\web.xml   (contains the listener definition, 
> points to the listener class, so that when this site starts the listener class 
> can perform some initialisation tasks)
> C:\WebApp1\work

This looks more like a whole Tomcat instance than just your webapp. Are
you expecting to use CATALINA_BASE to launch Tomcat from a shared
installation but in a multi-instance (even if "multi" only means "one")

> Question:
> 1. How should I configure Tomcat service so that it serves the WebApp1 website? 
> Which file in which folder to modify?

If the "website" is found in C:\WebApp1\webapps\ROOT then you should
only have to do one of the following:

C:\> C:\WebApp1\bin\startup.bat


C:\> C:\Tomcat\bin\startup.bat

One of these should launch Tomcat and should not require any editing of
any configuration files from the stock install unless you want to change
your <Connector> to listed on a port other than 8080 for HTTP requests.

> 2. When Tomcat starts WebApp1 website, which set of configuration files is it 
> using? (Those in C:\tomcat\conf\ or those in C:\WebApp1\conf\?)

That depends on how you start Tomcat. If you start Tomcat by setting
CATALINA_BASE=C:\WebApp1 and then running C:\Tomcat\bin\startup.bat,
then you'll get C:\WebApp1 started. If you run the same command without
setting CATALINA_BASE, you'll get C:\Tomcat started. If you run
C:\WebApp1\bin\startup.bat (because C:\Tomcat and C:\WebApp1 are
essentially the same as you've described them), then you'll run C:\WebApp1.

Your set up looks like it's more complicated than it needs to be.

Might I recommend the following:

1. Move your webapp temporarily from C:\WebApp1\webapps\ROOT somewhere
2. Completely remove C:\WebApp1
3. Create a new directory, C:\WebApp1
4. Re-read the "Advanced Configuration - Multiple Tomcat Instances"
   section of C:\Tomcat\RUNNING.txt, using C:\WebApp1 as CATALINA_BASE
5. Move your webapp back into C:\WebApp1\webapps

Always start Tomcat like this:

C:\> C:\Tomcat\bin\startup.bat

Of, if you want to use Tomcat as a service (like most people on
Microsoft Windows want to do), then make sure that you set the
catalina.base property appropriately via the service installer interface.

> 3. If I am to add another website to the same server, say C:\WebApp2, with exact 
> folder structure as WebApp1, how should I configure Tomcat service so that it 
> serves both WebApp1 and WebApp2?

If you want to serve two webapps from the same Tomcat install, then just
drop the second website into a subdirectory of C:\WebApp1\webapps. If
you want it to be the ROOT webapp of a different hostname, you'll have
to create multiple <Host> entries in server.xml, each with a different
"webapps" folder and put one ROOT in each one.

> 4. The two sites will use different IP addresses. For example WebApp1 is 
>, and WebApp2 is How do I tell Tomcat which IP belongs 
> to which website?

The <Connector> element takes an "address" attribute which can bind to a
specific IP. If you really only want a one-to-one mapping between IP
addresses and webapps, you'll have to create two separate <Service>
configurations, each with a <Connector> and <Host>.

If you don't mind serving the same content to all IP addresses, it's
generally much easier to have a single <Connector>, a single default
<Host>, and multiple webapps deployed into it.

You can probably do this (eventually) with IIS, but I know for a fact
that you can mangle URL spaces with Apache httpd's mod_proxy so you can
take a webapp deployed into Tomcat at http://host:8080/webapp1 and serve
it from httpd as while
goes to http://host:8080/webapp2.

If you give me a little more information about your actual requirements,
I can tell you which of the above is most appropriate (IMO).

Hope that helps,
- -chris
Version: GnuPG v1.4.10 (MingW32)
Comment: Using GnuPG with Mozilla -


To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message