使用[context] .xml和web.xml配置Web应用程序

时间:2012-01-18 12:43:55

标签: java web-applications java-ee tomcat configuration

我刚刚了解到我可以从“ServletContext”中检索参数和其他内容(即通过覆盖contextInitialized)。

阅读tomcats context doc表明我可以通过web.xml设置参数(用作默认值),然后用[context] .xml文件覆盖它们。

第一个问题:这是设置默认属性并让服务器管理员覆盖它们的好方法吗?

首先是一个概述,它显示了tomcats context xml中使用的标签所使用的各种属性/参数,web xml中使用的标签,如何从java中检索它以及用例/示例用于什么应该使用哪种参数?

通过玩弄它我面临以下问题:如果我通过tomcats web界面部署Web应用程序,[context] .xml将被完全忽略(控制台声明它已部署但第二个为null)

简而言之:如何正确使用web.xml和[context] .xml - 下面的链接没有多大帮助。

1 个答案:

答案 0 :(得分:4)

首先,通过web.xml声明(servlet / application)上下文属性更好,因为这是Java EE支持的官方方式,所以如果你这样声明它们,那么当你在其他App中部署应用程序时它们会工作Tomcat以外的服务器。

其次,我认为覆盖param值的Tomcat规则是:

如果你有一个$ CATALINA_BASE / conf / context.xml并且你在web.xml中声明了相同的属性,那么web.xml中的属性将具有优先级

如果您的应用程序(在META-INF目录中)中有$ CATALINA_BASE / conf / context.xml以及context.xml文件,它们都具有相同的参数,即META-INF / context中的参数。 xml将具有优先权。

最后,如果所有三个文件都使用相同的参数,那么web.xml中的文件将具有优先级。