Java配置Web应用程序的上下文根

时间:2015-02-17 15:06:40

标签: java spring properties wicket wildfly

我有一个使用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中以任何其他方式设置?

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:1)

感谢您的回答Harald Wellmann。它回答了这个问题并指出了正确的方向!

我必须自己找出一些可以帮助他人的事情:

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

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

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

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

也就是说,如果要在部署时在WildFly中控制Web应用程序的上下文根,则不能在jboss-web.xml中指定任何上下文根。

如果要利用运行时名称来控制上下文根,可以使用没有上下文根标记的jboss-web.xml。

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

希望这有帮助!