Undertow:WAR 文件之外的静态根内容(wildfly)

Posted

技术标签:

【中文标题】Undertow:WAR 文件之外的静态根内容(wildfly)【英文标题】:Undertow: Static root-content outside of WAR-file (wildfly) 【发布时间】:2017-02-19 08:13:12 【问题描述】:

我有以下问题,这让我发疯了:

我想配置我的 Wildfly 10.0.0 Final 应用服务器的 Undertow 子系统,以便它可以在部署 WAR 文件时处理根 (/) 上的静态内容。

当没有部署WAR时,它会显示欢迎内容,如standalone.xml中配置的那样:

<location name="/" handler="welcome-content"/>

<file name="welcome-content" path="$jboss.home.dir/welcome-content"/>

部署我的 WAR 后,将不再显示欢迎内容。直到现在,正是我想要的。现在我想将我们的 angular-client 提取到一个单独的目录中,比如说/home/user/awesomeClientDir

我尝试添加一个新的locationfile-handler,它在像www.website.com/subpath/index.html 这样的子路径中运行良好

只要我配置了/ 的路径,无论我的欢迎内容是否仍在我的standalone.xml 中,WAR 文件都会删除访问我的静态内容的能力。

我完全不知道,我怎么能做到这一点...我的 WAR 中的 web.xml 将我的 API 挂钩到 /rest 子路径,无论如何都很好用,但我的静态内容不会可在/(403 / 404 取决于星座)获取

任何帮助或提示将不胜感激,这个斗争是真实的!

【问题讨论】:

你的战争部署到/上下文了吗? 是的。我将 resteasy 配置为在 /rest 子路径中服务,但战争本身部署在根上下文中。我应该将其更改为 /rest 并让 resteasy 在 root 上服务吗? 是的,您应该将应用程序的上下文更改为 /rest 并在 root 上安装 resteasy。这将解决您的问题。 我会尽快尝试,到目前为止非常感谢! 【参考方案1】:

您应该将部署您的应用程序 (war) 绑定到 /rest 并让 resteasy 应用程序监听该应用程序的根目录。

这种方式,undertow 子系统仍然可以使用静态内容处理程序(或任何其他,如果你愿意)处理 / 资源和所有其他(但 /rest)

【讨论】:

太好了,这成功了。我很难在 /rest 上下文中部署我的战争,jboss-web.xml 没有工作。我只需要将 WAR 从 ROOT.war 重命名为 rest.war,现在它工作得很好!非常感谢!

以上是关于Undertow:WAR 文件之外的静态根内容(wildfly)的主要内容,如果未能解决你的问题,请参考以下文章

使用 undertow 文件处理程序重写 URL

如何配置 Undertow 以将字符集添加到文本/内容类型?

压缩 Undertow 服务器响应

Wildfly Undertow 文件 Mimetypes

如何访问静态内容服务文件夹之外的节点模块目录

为 Wildfly 提供的静态内容更新 Last-Modified