On Sat, Sep 22, 2018 at 2:10 AM Mark Thomas <ma...@apache.org> wrote:
> > On 22/09/2018 01:11, Igal Sapir wrote: > > Mark, > > > > On Fri, Sep 21, 2018 at 12:54 AM Mark Thomas <ma...@apache.org> wrote: > > > >> On 21/09/18 05:57, Igal Sapir wrote: > >>> I want to embed Tomcat in a simple application that does not use JSP, > and > >>> that sets the default servlet's listings initParam to true. > >>> > >>> When I use the StandardContext, Tomcat.initWebappDefaults() [1] is > called > >>> and adds the default servlet and the JSP servlet. I would like to > >> prevent > >>> that, but hopefully without having to rewrite the whole Tomcat class > nor > >> to > >>> subclass it. > >>> > >>> Further, when I try to override a setting in WEB-INF/web.xml, e.g. to > >>> specify init-param of "listings" with value "true" for the servlet > >>> "default", I get an error that "default" is not unique, but in a > regular > >>> Tomcat deployment that works just fine. > >>> > >>> Is there an easy way to override Tomcat.initWebappDefaults() or to > >> prevent > >>> it from being called? > >> > >> There are a couple few options. > >> > >> Sub-classing looks to be the simplest. > >> > >> You can use addContext() rather than addWebapp() but then you become > >> responsible for all of the configuration. If the app is simple, this > >> shouldn't be too much effort. > >> > > > > The app is simple, but it is for use by other developers who may use > their > > own web.xml files, so I think that sub-classing would be much easier and > > that's what I did. > > > > While searching for a solution prior to asking on the mailing list, I > > noticed that quite a few users were looking for a simple solution of > using > > addWebapp() without setting up the default servlets. What do you think > > about adding a System Property that will allow to opt-out of > > initWebappDefaults() and set the DefaultWebXml to null so that the > web.xml > > files will be parsed? > > I have a huge dislike for using system properties for configuration. A > setter on the Tomcat class would be fine. > Even better. I'll add that. https://bz.apache.org/bugzilla/show_bug.cgi?id=62755 > > > I am thinking of a property name > > org.apache.catalina.startup.INIT_WEBAPP_DEFAULTS [default true], or > > org.apache.catalina.startup.DISABLE_WEBAPP_DEFAULTS [default false]. > > > > Alternatively, we can add the sub-classing implementation that I used > (with > > the proper ASF license headers, of course). The code is pasted below in > > case anyone else needs such an implementation. > > > > I can add either solution myself if approved. > > I can imagine different users wanting to do various different things > here. I am wondering if there is a better way of handling this. The > tricky part is that we want to offer lots of flexibility in what is a > potentially complex area while keeping usage really simple. > True, but currently the reasonable defaults are always added and there is no simple way to undo them, so allowing the user to opt-out of the defaults will let him/her start from scratch and add only the required configurations. Igal