On Wednesday 02 February 2011 01:51:51 Jordan Michaels wrote:

Please don't top post.

> On 02/01/2011 04:38 PM, Conway Liu wrote:
> > It seems like the Tomcat service only serves applications from one
> > location ($CATALINA_HOME)

No. you can have
* webapps with a document path outside $CATALINA_HOME/$CATALINA_BASE
* (virtual) hosts with an appBase (base directory of all webapps of this host) 
outside $CATALINA_HOME/$CATALINA_BASE
* multiple tomcat instances with their webapps,configuration,logs ... in their 
own $CATALINA_BASE (and have their appBase/docPath outside this one 
$CATALINA_BASE)

> > Instead, we need to run them as
> > www.website1.com
> > www.website2.com
> > which is why we have created multiple IP addresses on the server.
> > 
> > And the jsp websites will sit in seperate physical folders on the server,
> > for example:
> > C:\website1\
> > C:\website2\

> A simple answer to your question is to create additional <Host> entries
> to your Tomcat server.xml file. 

That's the way to go.

> While I know that there are some on this
> list who disagree with this method, I personally find that configuring
> hosts and contexts in the server.xml file very simple as it makes adding
> new hosts to Tomcat similar to adding new hosts in Apache.

Hosts are usually configured in server.xml (unless you use some kind  of 
dynamic/programmatic configuration).

With contexts, it's not  "some on this list who disagree", it is "Tomcat 
developers discourage this method in the official documentation". It still 
works as of Tomcat 6 and 7 though.

>          <Host name="ourserver.com" appBase="webapps"
>               unpackWARs="true" autoDeploy="true"
>               xmlValidation="false" xmlNamespaceAware="false">
>               <Context path="" docBase="C:\website1\" />
>               <Alias>www.ourserver.com</Alias>
>          </Host>

You can achieve the same with:
<tomcat>/conf/server.xml:
          <Host name="example.com" appBase="example.com-webapps"
               unpackWARs="true" autoDeploy="true"
               xmlValidation="false" xmlNamespaceAware="false">
               <Alias>www.example.com</Alias>
          </Host>

<tomcat>/conf/Catalina/example.com/ROOT.xml:
<Context docBase="C:\website1\" />

Notes:
* appBase must be different for every host. Better take care of that even if 
you mean to deploy outside the appBase. appBase can also refer to a  path 
outside the tomcat directory structure.
* if you need/want the Tomcat manager app, you need to deploy it in each host
* if you have no specific reasons for your directory structure (like existing 
backup or fileserver infrastructure), you can as well deploy into appBase, 
with your webbapp in a directory named <appBase>/ROOT or in a .war file named 
<appBase>/ROOT.war and discard above mentioned ROOT.xml. It will more closely 
match what other tomcat users/admins are used to and function the same way.

> And Tomcat will now know how to resolve each domain to it's own
> directory rather then inside the ROOT webapp.
> 
> There are other ways to configure contexts, which I'm sure folks will
> post about subsequently, but I've found this works quite well and
> whether it's the "proper" way to do it or not, it will solve your problem.

The/one major drawback is: you need to restart Tomcat completely for any 
webapp context that's added/deleted/reconfigured.
I also don't see that much of an advantage compared to context.xml config 
files.

> > I think there's something to do with $CATALINA_BASE that I need to
> > configure, but I don't know how.

You need to do that only if you want to run a separate tomcat instance for 
each webapp. Each instance has its own Tomcat configuration, and its own JVM. 
Use it only if you need/want that.

> > Regards and thanks
> > Conway
> -Jordan

Rainer

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

Reply via email to