以编程方式在 Wildfly/Undertow 中创建虚拟主机

Posted

技术标签:

【中文标题】以编程方式在 Wildfly/Undertow 中创建虚拟主机【英文标题】:Creating virtual hosts in Wildfly/Undertow programmatically 【发布时间】:2014-12-05 14:33:42 【问题描述】:

我正在构建一个应用程序(部署在 Wildfly 上),该应用程序需要根据客户注册服务的方式创建虚拟主机。 例如默认应用程序/服务在名为 main.exampledomain.com 的主机上运行。 当客户 A 注册服务时,我需要创建一个虚拟主机 A.exampledomain.com,而 A.exampledomain.com 需要提供与 main.exampledomain.com 完全相同的 WAR/Web 内容。

我可以使用standalone.xml 中的“主机”配置来做到这一点 --> 子系统 undertow,在 jboss-web.xml 中添加额外的虚拟主机配置(用于所有要部署的 WAR)。

有没有一种程序化/动态的方式来做到这一点? 这可能吗?我应该使用 undertow API 来做到这一点吗?要么 这可能吗?我应该使用 Wildfly 管理 API 吗?

我搜索了一些与此相关的主题,只找到了有关配置的讨论和答案,但没有找到一种编程方式。

感谢和最好的问候, GPN

【问题讨论】:

【参考方案1】:

有两种方法可以满足您的需要。

1) 使用管理 api,可以通过原生 CLI api、REST、java ManagementClient 调用。 到目前为止,这将是最简单的,因为您需要做的就是调用一些命令来配置额外的主机及其配置。

2) 使用自定义扩展/ServiceActivator 这样,您的代码将作为 WildFly 中的子系统运行,通过这种方法,您可以将 UndertowService(*** undertow 服务)注入到您的 MSC 服务中,只需调用用于创建服务器/主机/侦听器的方法,......就可以了。

如果您的自定义只是在 undertow 子系统中配置一些额外的东西,那么管理 api 方式可能是最简单的。 但是,如果您想进行更深入的集成并对定制的内容以及我将如何使用定制子系统拥有更大的权力。这将允许您做更有趣的事情,例如在部署期间修改部署或更改运行应用程序的一些参数等......

【讨论】:

以上是关于以编程方式在 Wildfly/Undertow 中创建虚拟主机的主要内容,如果未能解决你的问题,请参考以下文章

Wildfly Undertow 文件 Mimetypes

Wildfly Undertow 中的 HTTPS 重定向

使用 WildFly (Undertow) 托管多个域

如果不接受 cookie,配置 WildFly/Undertow 以将 JSESSIONID 放在 URL 上

Wildfly 图像和 http 访问以显示图像

Wildfly Undertow:jakarta.servlets.Servlet 没有实现 javax.servlet.Servlet