【问题标题】:Java configure context root of web applicationJava配置Web应用程序的上下文根
【发布时间】:2015-04-18 07:49:18
【问题描述】:

我有一个使用 Wicket 6、Spring 3.2 和 WildFly 8.2.0 的 Java Web 应用程序。现在我在 jboss-web.xml 文件中设置我的 web 应用程序的上下文根,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss-web PUBLIC "-//JBoss//DTD Web Application 5.0//EN" "http://www.jboss.org/j2ee/dtd/jboss-web_5_0.dtd">
<jboss-web>
  <context-root>/myCustomContextRoot</context-root>
</jboss-web>

jboss-web.xml 文件被编译到战争中。现在一些客户想要将此上下文根更改为空的上下文根。所以我不得不根据不同的上下文根重新编译我的应用程序版本。有没有办法从 .war 外部、以编程方式从 .properties 文件或任何其他方式(例如 WildFly 8.2.0 的 standalone.xml)设置我的应用程序的上下文根?

【问题讨论】:

  • 好问题,我也想更改上下文根目录,但我手头有 jboss-web.xml,如果我们可以在 Wildfly 的设置中配置它,就像我们正在更改在tomcat的server.xml中,会好很多..

标签: java spring properties wicket wildfly


【解决方案1】:

在部署 Web 应用程序时设置运行时名称。假设您的 WAR 名为 myapp-1.0.0-SNAPSHOT.war。使用运行时名称foo.war,上下文根将是/foo

使用运行时名称ROOT.war,上下文根将是/

可以在通过 Web 控制台或 CLI 部署时设置运行时名称。

【讨论】:

  • 这么简单的解决方案,谢谢 :) 几年前我们在 jboss-web.xml 中设置了 context-root,我们忘记了 context-root 可以从 war 文件名继承 :)
【解决方案2】:

感谢您的回答 Harald Wellmann。它回答了问题并为我指明了正确的方向!

有些事情我必须自己找出来,这可能对其他人有所帮助:

  • 在 jboss-cli 中指定运行时名称的确切语法是:

    部署 path_to_war_file --runtime-name=wantedName.war

    这会导致 webapp 的上下文根为 /wantedName/。

  • 如果 war 文件在 WEB-INF 中包含 jboss-web.xml,而 jboss-web.xml 又包含 context-root 标记,则 runtime-name 对 context-root 没有任何影响。

也就是说,如果你想在部署时在 WildFly 中控制 web-app 的上下文根,你不能在 jboss-web.xml 中指定任何上下文根。

如果您想利用运行时名称来控制上下文根,则可以使用不带上下文根标记的 jboss-web.xml。

我在 WildFly 9.0.1 和 9.0.2 上对此进行了测试:

希望这会有所帮助!

【讨论】:

  • 非常感谢!这解决了我的问题,因为我忘记从 jboss-web.xml 中删除 context-root。
猜你喜欢
  • 1970-01-01
  • 2011-07-26
  • 1970-01-01
  • 1970-01-01
  • 2015-08-31
  • 2023-03-05
  • 2012-02-01
  • 1970-01-01
  • 2012-07-08
相关资源
最近更新 更多