我有一个使用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
中以任何其他方式设置?
答案 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 /的上下文根。
也就是说,如果要在部署时在WildFly中控制Web应用程序的上下文根,则不能在jboss-web.xml中指定任何上下文根。
如果要利用运行时名称来控制上下文根,可以使用没有上下文根标记的jboss-web.xml。
我在WildFly 9.0.1和9.0.2上进行了测试:
希望这有帮助!