在WAR的WEB-INF目录之外配置Web应用程序的上下文路径

时间:2015-10-07 15:11:21

标签: java java-ee war wildfly

我正在尝试将我的Web应用程序作为WAR文件部署到WildFly 9。

我可以通过在deployments目录中重命名WAR文件或在WAR文件中指定WEB-INF/jboss-web.xml中的上下文来指定Web应用程序的上下文路径。

有没有办法在WAR文件的WEB-INF目录中指定外部的上下文路径?这样就可以在打包WAR之后更改上下文路径。

4 个答案:

答案 0 :(得分:3)

您可以使用CLI执行部署,在部署时指定上下文路径。

[steve@mylaptop wildfly-9.0.0.Final]$ bin/jboss-cli.sh 
You are disconnected at the moment. Type 'connect' to connect to the server or 'help' for the list of supported commands.
[disconnected /] connect
[standalone@localhost:9990 /] deploy /path/to/my-app-1.0-SNAPSHOT.war --runtime-name=foo.war

这将导致您的应用程序在/ foo

处可用

使用

deploy --help

了解更多信息。

答案 1 :(得分:2)

您也可以通过WildFly Maven Plugin作为CI工作的一部分或类似工作。

我们使用以下命令将war文件部署到另一个上下文根目录:

org.wildfly.plugins:wildfly-maven-plugin:deploy-only
    -Dwildfly.deployment.filename=app.war 
    -Dwildfly.deployment.runtime.name=appcontext.war

该应用将部署在 / appcontext

请注意,您应该从 jboss-web.xml 中删除 context-root ,否则此值将始终获胜。

答案 2 :(得分:1)

Web应用程序的上下文根以三种不同的方式确定:

  • 如果将其部署为EAR的一部分,则在EAR的application.xml文件中指定上下文根。
  • 如果将其部署为独立WAR,则可以在WEB-INF/jboss-web.xml中指定上下文根。
  • 如果未指定上下文根,则上下文根将是WAR文件的名称。

我不知道第四种选择。

另请参阅官方文档:https://docs.jboss.org/jbossas/guides/webguide/r2/en/html/ch06.html

答案 3 :(得分:0)

可以使用Wildfly中的CLI console命令行界面在运行时更改war应用程序的上下文根。使用命令deployment-overlay可以这样做:

deployment-overlay add --name=myAppOverlay \ --content=/WEB-INF/jboss-web.xml=/myFiles/new-jboss-web.xml \ --deployments=myApp.war --redeploy-affected

此命令强制Wildfly将文件new-jboss-web.xml的内容加载到内部Wildfly缓存中并使用它(在每次部署myApp.war期间)作为战争网络的/WEB-INF/jboss-web.xml文件的替换 - 存档。如您所知,因此可以通过以下方式在new-jboss-web.xml中定义Web应用程序的上下文:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
  <context-root>myNewPathToApp</context-root>
</jboss-web>

add操作外,deployment-overlay CLI命令还other actions,以便使用部署叠加层进行操作(例如删除叠加层等)。