我刚刚了解到我可以从“ServletContext”中检索参数和其他内容(即通过覆盖 contextInitialized)。
阅读 tomcats context doc显示我可以通过 web.xml 设置参数(用作默认值),然后用 [context].xml 文件覆盖它们。
第一个问题:这是设置默认属性并让服务器管理员覆盖它们的好方法吗?
首先是一个概述,它显示了在 tomcats 上下文 xml 中使用的标签可用的各种属性/参数,在 web xml 中使用的标签,如何从 java 中检索它以及一个用例/示例应该使用什么样的参数?
通过玩弄它,我面临以下问题:如果我通过 tomcats Web 界面部署 Web 应用程序,[context].xml 将被完全忽略(控制台状态它已部署但 2nd 为空)
长话短说:如何正确使用 web.xml 和 [context].xml - 下面的链接帮助不大。
最佳答案
首先,通过 web.xml 声明(servlet/应用程序)上下文属性更好,因为这是官方 Java EE 支持的方式,因此如果您这样声明它们,当您在其他应用程序中部署您的应用程序时它们将起作用Tomcat 以外的服务器。
其次,我相信 Tomcat 覆盖参数值的规则是:
如果你有一个 $CATALINA_BASE/conf/context.xml 并且你在其中和 web.xml 中声明了相同的属性,则 web.xml 中的属性将优先
如果您的应用程序中(在 META-INF 目录中)有一个 $CATALINA_BASE/conf/context.xml 和一个 context.xml 文件,它们都具有相同的参数,即 META-INF/context 中的参数。 xml 将具有优先权。
最后,如果所有三个文件都 decal 了相同的参数,则 web.xml 中的文件将具有优先权。
关于java - 使用 [context].xml 和 web.xml 来配置网络应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8910280/