【问题标题】:How to add a context paramter to only a single webapp in tomcat?如何将上下文参数添加到tomcat中的单个webapp?
【发布时间】:2016-04-14 05:05:21
【问题描述】:

文档说这是从 server.xml 向 webapp 发送参数的方法:

<Context>
  ...
  <Parameter name="companyName" value="My Company, Incorporated"
         override="false"/>
  ...
</Context>

我认为默认情况下,这会将 companyName 值发送到所有 web 应用程序。

如何将这个参数只发送到单个 webapp

注意,我知道您可以在 webapp 的 /WEB-INF/web.xml 文件中添加条目。但是,我想要一个在 tomcat 级别设置的解决方案。我根本不想编辑war文件。

还有其他方法可以将此参数仅发送到单个 web 应用程序吗?

GC

【问题讨论】:

  • 您的意思是conf/server.xml 还是conf/context.xml?一个会按照你描述的那样工作,而另一个根本不会像你描述的那样做任何事情。

标签: tomcat jakarta-ee tomcat7 tomcat6 tomcat8


【解决方案1】:

&lt;Context&gt; 没有文档库、路径等在​​server.xml 中无效,因此您对问题中发布的配置一无所获。鉴于该配置,我希望 Tomcat 不会启动。

如果您的配置正确,&lt;Parameter&gt; 只会影响定义它的上下文。

如果您将&lt;Parameter&gt; 放入conf/context.xml,那么实际上您将在部署在Tomcat 实例中的每个上下文中定义此参数。

如果您想覆盖捆绑在 Web 应用程序中的 META-INF/context.xml(因为您不想在每次发布新版本时都添加 &lt;Parameter&gt;),您应该使用有据可查的通过在conf/[engine]/[host]/[appname].xml 中提供您自己的覆盖Web 应用程序的META-INF/context.xml 的技术。

【讨论】:

  • conf/[engine]/[host]/[appname].xml 是覆盖整个文件还是只是应用程序的 web.xml 的一部分?
  • conf/[engine]/[host]/[appname].xml 根本不会覆盖 web.xml 的任何部分。
  • 我认为你的想法是对的。我现在无法测试它,但是,你的想法似乎是正确的。几周后我可能会回来。
【解决方案2】:

不,如果您不想在所有 Web 应用程序中添加它,则不能将其添加到 server.xml 文件中。 相反,您必须将其添加到项目的 META-INF 文件夹中的 context.xml 文件中,这需要更改您的战争。

【讨论】:

  • 我知道那个解决方案。我正在寻找一种解决方案,允许我设置一次值,并且每次替换 .war 时都不需要更新它。
  • 自从它添加到您的项目中,每次部署战争时,它都会捆绑在其中,因此除非您愿意,否则您实际上不需要更改它。正如我所提到的,你不能完全按照你想要的方式去做,因为它违反了服务器规范。如果您确实找到了不同的解决方案,请务必与我们分享。
  • 另请阅读本文以了解定义上下文的所有可能方式:tomcat.apache.org/tomcat-8.0-doc/config/…
猜你喜欢
  • 1970-01-01
  • 2012-09-05
  • 1970-01-01
  • 2011-10-03
  • 1970-01-01
  • 2021-07-19
  • 2012-06-17
  • 2017-11-28
  • 1970-01-01
相关资源
最近更新 更多