Hi,

Again, thanks to all who replied my post. Your input helped me learn a lot
more about Tomcat.

While reading your answers, I have continued to google about this topic and
today I came across a site that gave me a hint.

To run Tomcat as a windows service, I didn't need to have a separate
installation of Tomcat actually. I.e. I didn't need to have the C:\Tomcat
installation.

Within the C:\WebApp1\bin\ folder, there is a service.bat. To run WebApp1 as
a Windows service, I just need to go into C:\WebApp1\bin and type:

        Service.bat install WebApp1

This will then install a windows service named "Apache Tomcat WwebApp1".
If the service can't start, the copy C:\Program Files
(x86)\Java\jdk1.6.0_23\bin\msvcr71.dll into C:\WebApp1\bin\ and the service
will start.
Then WebApp1 is alive!


To get WebApp2 up and running (which I have not test), I would need to
change all the port numbers (for start up, shutdown...etc) so that they
don't conflict with WebApp1.
Then go into C:\WebApp2\bin and type

        Service.bat install WebApp2

This will then install a windows service named "Apache Tomcat WebApp2".
Start the service up and WebApp2 goes live!

Simple as that!


Best regards
Conway




-----Original Message-----
From: Mark Eggers [mailto:its_toas...@yahoo.com] 
Sent: Friday, 4 February 2011 10:41 a.m.
To: Tomcat Users List
Subject: Re: Tomcat Service configuration for running sites

This will be long - read at your own risk.

----- Original Message Begin ----


Hi,

Thanks to all who answered my previous post regarding running Tomcat with
IIS7.

I am still quite confused about the whole thing, so I think I should try to 
forget about IIS for the time being, and concentrate first on how to get
Tomcat 
service to serve a java website sitting physically outside of Tomcat's
installed 



folder.

BTW, platform is Windows 2008 R2 64bit.
Tomcat installed is 5.5.32. (In my previous question I installed 6.0.30 but
I 
now realised when the website was running on Linux, my manager was using
5.5.23 
and now I can only find 5.5.32 to download. I hope it makes no difference).


For example, Tomcat service is installed on: (... means some more sub
folders or 



files within):
C:\Tomcat\

And the subfolders under this folder are:
C:\tomcat\bin\...   (contains tomcat5.exe, tomcat5w.exe, and 3 .jar files)
C:\tomcat\common\...
C:\tomcat\conf\...   (contains catalina.policy, catalina.properties, 
context.xml, logging.properties, server.xml, server-minimal.xml, 
tomcat-users.xml, web.xml)
C:\Tomcat\conf\Catalina\
C:\Tomcat\conf\Catalina\localhost
C:\tomcat\logs
C:\tomcat\server
C:\Tomcat\server\classes\
C:\Tomcat\server\lib\...   (many .jar files in there, e.g. catalina.jar)
C:\Tomcat\server\webapps\...
C:\tomcat\shared\...
C:\tomcat\temp
C:\tomcat\webapps\ROOT\...
C:\tomcat\work

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, catalina.properties, 
context.xml, logging.properties, 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


Question:
1. How should I configure Tomcat service so that it serves the WebApp1
website? 
Which file in which folder to modify?
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\?)
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?
4. The two sites will use different IP addresses. For example WebApp1 is 
43.88.12.123, and WebApp2 is 43.88.12.133. How do I tell Tomcat which IP
belongs 



to which website?


Again, your input is very much appreciated.

Best regards
Conway

----- Original Message End ----

Note, I have not tried this, since I normally run multiple Tomcats
using CATALINA_HOME and CATALINA_BASE. I'm basing this off the
documentation found at:

http://tomcat.apache.org/tomcat-5.5-doc/index.html

AGAIN - CAVEAT - I have not tested this. I am not sure that there
aren't a lot of typos (as well as other mistakes). Read the above
documentation 
first, and then see if what I've written below makes sense.

Here's the overview:

1. Create multiple <Service name="some-name"> under the <Server>
   element.

2. Create the desired connectors under each <Service name="some-name">

3. The connectors should have an address="1.2.3.4" attribute for the desired
IP
   address.

4. Create exactly one <Engine> element for each
   <Service name="some-name">. If you are going to use clustering,
   assign a UNIQUE name to the jvmroute="a-name" to each <Engine>
   element.

   NOTE: Since you are defining multilple <Service> elements under a
   single <Server> element, you MUST assign each <Engine> a unique
   name with the name="b-name" attribute.

5. Under the <Engine> name, create your desired <Host> element. For
   the appBase attribute, give the absolute path where your web
   applications will be stored.

Some notes on the above:

1. The name="some-name" attribute of the <Service> element is used in
   storing application-specific context.xml files
   (application-name.xml).

Without looking at the code, I think you'll need to create
subdirectories for each Service name (should I have said Engine name?) in 
%CATALINA_HOME%\conf. For example, if you created the following <Service> 
(<Engine name="Catalina2"> . . . </Engine> ??)elements:

   <Service name="Catalina2"> . . . . </Service>
   <Service name="Catalina3"> . . . . </Service>

Then you would probably need to create the following directories:

   %CATALINA_HOME%\conf\Catalina2
   %CATALINA_HOME%\conf\Catalina3

This is in addition to the default %CATALINA_HOME%\conf\Catalina directory.

4. The name attribute of the <Engine> element will be used as part of
   the log name for that particular <Service>.

So for the example above, you'll see the following in your
%CATALINA_HOME%\logs directory (based on Linux - have not run this on
Windows):

   catalina-[date].log
   catalina.out
   catalina2-[date].log
   catalina2.out
   catalina3-[date].log
   catalina3.out

A unique defaultHost attribute is probably necessary due to logging.

5. The <Host> element should have the same name attribute as the
   defaultHost attribute of the corresponding <Engine> element.

Logs will show up in %CATALINA_HOME%\logs as (based on Linux - Windows may
be different):

  localhost.[date].out
  ahost.[date].out
  bhost.[date].out

Manager Application:

If you are going to use the manager application, you'll need a copy
for each host. Copy the existing:

   %CATALINA_HOME%\conf\Catalina\localhost\manager.xml

to each %CATALINA_HOME%\conf\[name]\[host-name]\manager.xml

where:
   [name] is from the name attribute in your <Engine> element
   [host-name] is from the name attribute in your <Host> element

In this configuration, the same tomcat-users.xml file which defines
the manager application user name and passwords is used for all
instances. This can be changed, but this email is long enough as it
is.

Example

Please note that I have NOT tested this. I don't have a multi-homed
server, and I run 6.0.x as a service in my Windows environment.

Following the instructions above, I come up with this server.xml file:

<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">

  <!-- Comment these entries out to disable JMX MBeans
       support used for the 
       administration web application -->
  <Listener className="org.apache.catalina.core.AprLifecycleListener" />
  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"
/>
  <Listener
    className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"
/>
  <Listener 
 
className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/>

  <!-- Global JNDI resources -->
  <GlobalNamingResources>
    <!-- Editable user database that can also be used by
         UserDatabaseRealm to authenticate users -->
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>

  <!-- Define the Tomcat Stand-Alone Services 
       This one is the default, modified slightly
  -->
  <Service name="Catalina">
    <!-- Define a non-SSL HTTP/1.1 Connector on port 8080
         Note the address attribute that is added
    -->
    <Connector port="8080" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true"
               address="1.1.1.1"
               URIEncoding="UTF-8"/>
    <!-- this is for Tomcat - IIS connector, comment out if not used -->
    <Connector port="8009"
               address="1.1.1.1"
               enableLookups="false" redirectPort="8443" protocol="AJP/1.3"
/>
    <Engine name="Catalina" defaultHost="localhost">
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
             resourceName="UserDatabase"/>
      <!-- note the absolute path name for appBase -->
      <Host name="localhost" appBase="C:\Webapps1"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
      </Host>
    </Engine>
  </Service>

  <!-- Define the Tomcat Stand-Alone Services 
       This is another service. Unique name present in service
  -->
  <Service name="Catalina2">
    <!-- Define a non-SSL HTTP/1.1 Connector on port 8080
         Note a different address attribute is used
         Note a different name is used and is unique
    -->
    <Connector port="8080" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true"
               address="2.2.2.2"
               URIEncoding="UTF-8"/>
    <!-- this is for Tomcat - IIS connector, comment out if not used -->
    <Connector port="8009"
               address="2.2.2.2"
               enableLookups="false" redirectPort="8443" protocol="AJP/1.3"
/>
    <!-- Unique name present in Engine
         Different default host name so log naming will be distinguishable
    -->
    <Engine name="Catalina2" defaultHost="Ahost">
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
             resourceName="UserDatabase"/>
      <!-- note the absolute path name for appBase -->
      <Host name="Ahost" appBase="C:\Webapps2"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
      </Host>
    </Engine>
  </Service>

  <!-- Define the Tomcat Stand-Alone Services 
       This is another service. Unique name present in service
  -->
  <Service name="Catalina3">
    <!-- Define a non-SSL HTTP/1.1 Connector on port 8080
         Note a different address attribute is used
         Note a different name is used and is unique
    -->
    <Connector port="8080" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true"
               address="3.3.3.3"
               URIEncoding="UTF-8"/>
    <!-- this is for Tomcat - IIS connector, comment out if not used -->
    <Connector port="8009"
               address="3.3.3.3"
               enableLookups="false" redirectPort="8443" protocol="AJP/1.3"
/>
    <!-- Unique name present in Engine
         Different default host name so log naming will be distinguishable
    -->
    <Engine name="Catalina3" defaultHost="Bhost">
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
             resourceName="UserDatabase"/>
      <!-- note the absolute path name for appBase -->
      <Host name="Bhost" appBase="C:\Webapps3"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
      </Host>
    </Engine>
  </Service>

</Server>

The directory structure is shown below:

C:\Tomcat
--- bin
--- common
--- conf
    --- Catalina
         --- localhost
            --- manager.xml (file)
    --- Catalina2
         --- Ahost
            --- manager.xml (file)
    --- Catalina3
         --- Bhost
            --- manager.xml (file)
--- logs
--- server
--- shared
--- temp
--- webapps (no longer used in the above configuration)
--- work
C:\Webapps1
C:\Webapps2
C:\Webapps3

. . . . just my two cents


/mde/



      

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to