我正在尝试将我的Web应用程序作为WAR文件部署到WildFly 9。
我可以通过在deployments
目录中重命名WAR文件或在WAR文件中指定WEB-INF/jboss-web.xml
中的上下文来指定Web应用程序的上下文路径。
有没有办法在WAR文件的WEB-INF
目录中指定外部的上下文路径?这样就可以在打包WAR之后更改上下文路径。
答案 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应用程序的上下文根以三种不同的方式确定:
application.xml
文件中指定上下文根。WEB-INF/jboss-web.xml
中指定上下文根。我不知道第四种选择。
另请参阅官方文档: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,以便使用部署叠加层进行操作(例如删除叠加层等)。