Deploying a web application in Tomcat involves placing the war file or the extracted folder in Tomcat's webapps folder. I created a very basic web application named simple and placed it in the webapps folder.
I deployed it to my local tomcat instance on port 80. I also renamed my machine to "www.robin.com". So the application URL is http://www.robin.com/simple.
On hitting the URL, the welcome page index.jsp is displayed.
There is just one slight eyesore. All my URLs include the name of the webapp. Tomcat provides us with a nifty trick to overcome this problem.
We can avoid the web app name being displayed by renaming our war as "ROOT.war". Or our extracted folder as ROOT. In this case our application is now the root application. A request to the Tomcat instance could now directly resolve onto our application.
This will also work for all relative URLs - basically any URL without the webapp name hard-coded in it. If we do a full deployment of Tomcat, we can already find the welcome application deployed with the ROOT name. That is why directly accessing Tomcat guides us to the same.
Important thing to note is that we cannot access the same URL with the name ROOT. So the below would result in an error:
So while you can avoid using webapp names in your URL if you name your webapp as "ROOT", you cannot access any URL using the "ROOT" webapp.
I don't think any of the big websites directly uses Tomcat as the web front end. But for small applications with Tomcat deployed as the web layer we could achieve a nice looking URL with this trick
I deployed it to my local tomcat instance on port 80. I also renamed my machine to "www.robin.com". So the application URL is http://www.robin.com/simple.
On hitting the URL, the welcome page index.jsp is displayed.
There is just one slight eyesore. All my URLs include the name of the webapp. Tomcat provides us with a nifty trick to overcome this problem.
We can avoid the web app name being displayed by renaming our war as "ROOT.war". Or our extracted folder as ROOT. In this case our application is now the root application. A request to the Tomcat instance could now directly resolve onto our application.
This will also work for all relative URLs - basically any URL without the webapp name hard-coded in it. If we do a full deployment of Tomcat, we can already find the welcome application deployed with the ROOT name. That is why directly accessing Tomcat guides us to the same.
Important thing to note is that we cannot access the same URL with the name ROOT. So the below would result in an error:
So while you can avoid using webapp names in your URL if you name your webapp as "ROOT", you cannot access any URL using the "ROOT" webapp.
I don't think any of the big websites directly uses Tomcat as the web front end. But for small applications with Tomcat deployed as the web layer we could achieve a nice looking URL with this trick
Or just configure path in server.xml for your app..
ReplyDeletesee http://tomcat.apache.org/tomcat-7.0-doc/config/context.html#Context_Parameters
Not sure I followed this
DeleteHow did you renamed my machine to "www.robin.com"?
ReplyDeleteThank you
I added an entry in my hosts file - not a portable solution, just to make the example clearer.
Delete