I am running tomcat 6.0, and am having trouble configuring it to do what I want...

I have two web apps, call them X and Y, deployed as X.war and Y.war. Each has a servlet called blah.

So I can access them like so: http://server/X/blah http://server/Y/blah

What I want to do is pretend they are one web application Z, and be able to do this:

http://server/Z/X/blah --> as if I'd gone to http://server/X/blah

http://server/Z/Y/blah --> as if I'd gone to http://server/Y/blah

So I changed the (catalina_home)/conf/Catalina/localhost/X.xml as follows: < context override="true" path="/Z/X" reloadable="false" >

However that didn't work out; when going to http://server/Z/X/blah I get "The requested resource (/Z/X/blah) is not available."

Where am I going wrong?


An alternate way to do this would be to setup tomcat behind apache via ajp. Then, use mod_proxy_ajp to map the http://server/Z/ to ajp://server/ instead.


If you add the Context within server.xml it will work as you want.

<Context docBase="x" path="/z/x" reloadable="true"  />

This approach is not recommended by the Tomcat docs, since any changes to server.xml means restarting the server disturbing all the web apps.

But, on the flip side, the practice of keeping this as you want in Catalina_Home/conf/Catalina/localhost/context.xml has some unreliabilities as others have reported.

See https://stackoverflow.com/questions/4032773/why-does-tomcat-replace-context-xml-on-redeploy and

Why does tomcat like deleting my context.xml file?


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.