tomcatweb-applicationsweb-deploymentcontextroot

tomcat: deploying a webapp which is accessed via browser without context root name


(Sorry for my english, please correct if somethings are wrong).

I have a webapp (spring mvc 4 application) which code is placed in tomcat-7/webapp/mywebapp/ folder. Webapp is accessed via browser with url http://my-web-app.loc:8080 (i.e. without context root name mywebapp after port number). I have following setups in tomcat-7/conf/server.xml:

<Host name="my-web-app.loc" appBase="webapps" unpackWARs="true" autoDeploy="true">
  <Context path="" docBase="mywebapp" reloadable="true" allowLinking="true" antiJARLocking="true" copyXML="true" />
     <Valve className="org.apache.catalina.valves.AccessLogValve" 
           directory="logs" 
           prefix="mywebapp.access." 
           suffix=".log" 
           pattern="common" 
           resolveHosts="true" />
</Host>

I delploy webapp by placing war-file into /webapp folder. But after war-file is unpacked and webapp is successfully deployed, I can access to webapp only with http://my-web-app.loc:8080/mywebapp url. Url http://my-web-app.loc:8080 directs me to 404 tomcat error page.

What I have to setup to access to webapp with http://my-web-app.loc:8080 url?


Solution

  • Re-name the directory from mywebapp to ROOT (case matters, even on a case-insensitive filesystem).

    Also, don't put your <Context> element in server.xml. Instead, put it into your web application under META-INF/context.xml.