What is conf/web.xml used for in Tomcat as oppsed to the one in WEB-INF?

28,781

Solution 1

Yes, you definitely need it! It contains among others the declarations of the default servlet and the JSP servlet. Without it, all requests which are not mapped on any of your servlets (e.g. CSS/JS/images) will cease to work and all JSP requests will return as plain unparsed source code.

Further it also contains a large mime type mapping so that the right content type will be set based on the file extension. Without it, all content will be delivered as application/octet-stream and the browser may fail to interpret the content.

Do not remove Tomcat's own web.xml. It contains the minimum set of settings required to get your webapps to work properly. You can at most change the initialization parameters of the default servlet and JSP servlet there, such as enabling/disabling directory listings and enabling/disabling whitespace trimming and other minor performance settings. You can also add extra mime type mappings there, but you could also just do that on your webapp's own web.xml. This is also explicitly mentioned in the first comment block of Tomcat's web.xml:

<!-- ======================== Introduction ============================== -->
<!-- This document defines default values for *all* web applications      -->
<!-- loaded into this instance of Tomcat.  As each application is         -->
<!-- deployed, this file is processed, followed by the                    -->
<!-- "/WEB-INF/web.xml" deployment descriptor from your own               -->
<!-- applications.                                                        -->
<!--                                                                      -->
<!-- WARNING:  Do not configure application-specific resources here!      -->
<!-- They should go in the "/WEB-INF/web.xml" file in your application.   -->

Solution 2

The web.xml under WEB-INF is a deployment descriptor which is applied to the current web application only and as such controls the running of just that web app. It allows you define your servlets, servlet mapping to URLs, context (startup) parameters etc. The web.xml under Tomcat's conf directory defines the default parameters for ALL applications on a Tomcat instance. In theory, this could be missing but then all of the web application deployed will have to define all of the settings in it -- such that .jsp pages are processed by the JspServlet (which will compile them and load the generated servlet etc), all the mime mappings and default file lists (for those apps that don't specifiy it). Think of it as a set of defaults which you can always override, however, they are there for your convenience so you don't have to define them for each app.

Share:
28,781
sproketboy
Author by

sproketboy

Updated on May 07, 2020

Comments

  • sproketboy
    sproketboy about 4 years

    My Tomcat deployment has a web.xml file under the conf folder. What is conf/web.xml used for in Tomcat as opposed to the one in WEB-INF? Do I need it?