【问题标题】:Configuring the context path of a web app outside the WAR's WEB-INF directory在 WAR 的 WEB-INF 目录之外配置 Web 应用程序的上下文路径
【发布时间】:2016-01-04 21:44:20
【问题描述】:

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

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

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

【问题讨论】:

  • 嗯,战争的名字有点在WEB-INF 目录之外,不是吗?
  • 是的,这是一种可能的做法,但我正在寻找某种允许我这样做的配置文件。
  • 无法使用配置文件,但您可以使用不同的部署方式来指定上下文路径,请参阅 Steve C 和我的答案。

标签: java jakarta-ee war wildfly


【解决方案1】:

可以使用 Wildfly 中的 CLI console 命令行界面在运行时更改战争应用程序的上下文根。可以用命令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 的每次部署期间)作为您的 war web-archive 的 /WEB-INF/jboss-web.xml 文件的替换。如您所知,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 以便操作部署覆盖(例如删除覆盖等)。

【讨论】:

    【解决方案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 否则这个值将永远获胜。

    【讨论】:

      【解决方案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
      

      了解更多信息。

      【讨论】:

      • 不可能以这种方式将战争映射到/,是吗?
      【解决方案4】:

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

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

      我不知道第四个选项。

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

      【讨论】:

      • 您的文档链接已过期近十年,尤其是问题被标记为wildfly
      猜你喜欢
      • 2016-08-23
      • 2015-03-10
      • 1970-01-01
      • 1970-01-01
      • 2014-06-05
      • 2015-03-20
      • 2016-03-01
      • 1970-01-01
      • 2016-11-15
      相关资源
      最近更新 更多