2014-10-10 100 views
0

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

我可以使用standalone.xml - > subsystem subsystem中的“主机”配置以及jboss-web.xml中的其他虚拟主机配置(针对要部署的所有WAR)执行此操作。

有没有编程/动态的方式来做到这一点? 这是可能的,我应该使用undertow API来做到这一点吗? OR 这是可能的,我应该使用Wildfly Management API吗?

我搜索了一些与此相关的主题,只发现围绕配置的讨论和答案,但没有找到一个编程的方式来做到这一点。

感谢和问候, GPN

回答

1

有做你需要的东西双向的。

1)使用管理api,可以通过本地CLI api,REST和java ManagementClient调用。 这将是最简单的,因为您只需调用几个命令即可配置额外的主机及其配置。

2)使用自定义扩展/ ServiceActivator 这样,您的代码将作为WildFly内的子系统运行,您可以使用该方法将UndertowService(顶级管道服务)注入到MSC服务中,并调用创建服务器的方法/ hosts/listeners,...就可以了。

如果您的定制只是在底层子系统中配置少量额外的东西,而不是可能的管理API方式将是最简单的。 但是,如果您想进行更深层次的集成,并且拥有更多的权力,可以定制自定义子系统以及如何使用自定义子系统。这将允许你做更有趣的事情,比如可能在部署期间修改部署或更改运行应用程序等的某些参数等。