在 WAR 的 WEB-INF 目录之外配置 Web 应用程序的上下文路径
Configuring the context path of a web app outside the WAR's WEB-INF directory
我正在尝试将我的网络应用程序作为 WAR 文件部署到 WildFly 9。
我可以通过重命名 deployments
目录中的 WAR 文件或通过在 WAR 中的 WEB-INF/jboss-web.xml
中指定上下文来指定 Web 应用程序的上下文路径文件。
有没有办法在 WAR 文件的 WEB-INF
目录 外部 指定上下文路径?这样就可以在打包 WAR.
后更改上下文路径
Web 应用程序的上下文根以三种不同的方式确定:
- 如果它作为 EAR 的一部分部署,上下文根在 EAR 的
application.xml
文件中指定。
- 如果作为独立部署 WAR,可以在
WEB-INF/jboss-web.xml
. 中指定上下文根
- 如果未指定上下文根,则上下文根将是 WAR 文件的名称。
我不知道第四个选项。
另见官方文档:https://docs.jboss.org/jbossas/guides/webguide/r2/en/html/ch06.html
您可以使用 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
了解更多信息。
您也可以通过 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 中删除 context-root。否则,xml这个值永远赢。
可以使用 CLI console Command Line Interface in Wildfly. It's possible with command deployment-overlay 在运行时更改 war 应用程序的上下文根,这样:
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
文件的替换您的 war 网络存档。如您所知,Web 应用程序的上下文因此可以按以下方式在 new-jboss-web.xml
中定义:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
<context-root>myNewPathToApp</context-root>
</jboss-web>
除了 add
操作之外,deployment-overlay
CLI 命令还具有 other actions 以便使用部署覆盖进行操作(例如删除覆盖等)。
我正在尝试将我的网络应用程序作为 WAR 文件部署到 WildFly 9。
我可以通过重命名 deployments
目录中的 WAR 文件或通过在 WAR 中的 WEB-INF/jboss-web.xml
中指定上下文来指定 Web 应用程序的上下文路径文件。
有没有办法在 WAR 文件的 WEB-INF
目录 外部 指定上下文路径?这样就可以在打包 WAR.
Web 应用程序的上下文根以三种不同的方式确定:
- 如果它作为 EAR 的一部分部署,上下文根在 EAR 的
application.xml
文件中指定。 - 如果作为独立部署 WAR,可以在
WEB-INF/jboss-web.xml
. 中指定上下文根
- 如果未指定上下文根,则上下文根将是 WAR 文件的名称。
我不知道第四个选项。
另见官方文档:https://docs.jboss.org/jbossas/guides/webguide/r2/en/html/ch06.html
您可以使用 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
了解更多信息。
您也可以通过 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 中删除 context-root。否则,xml这个值永远赢。
可以使用 CLI console Command Line Interface in Wildfly. It's possible with command deployment-overlay 在运行时更改 war 应用程序的上下文根,这样:
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
文件的替换您的 war 网络存档。如您所知,Web 应用程序的上下文因此可以按以下方式在 new-jboss-web.xml
中定义:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
<context-root>myNewPathToApp</context-root>
</jboss-web>
除了 add
操作之外,deployment-overlay
CLI 命令还具有 other actions 以便使用部署覆盖进行操作(例如删除覆盖等)。