我面临同样的问题,并试图解决方案。虽然它或多或少的工作,但仍有一些小故障。说实话,感觉更像是与症状对抗,而不是治疗疾病。
那么这里就是终于为我工作:
而不是通过路径分开设置的部署,我分配每个部署到自己的端口:
foo.war <-- http://localhost:8080/ -- | Proxy | <-- http://www.foo.com -- | Client |
bar.war <-- http://localhost:8181/ -- | Proxy | <-- http://www.bar.com -- | Client |
这样一来,无论是部署能够使用/作为它们的上下文路径,因此不需要编辑上下文路径。
要做到这一点,你不必同时运行两个应用程序服务器。在我的情况(Wildfly 10.0),这是足以确定在wildfly配置的两个暗流服务器,每个服务器都有自己的虚拟主机和HTTP侦听器,像这样:
<server name="foo-server">
<http-listener name="foo-listener" proxy-address-forwarding="true" socket-binding="foo-http"/>
<host name="foo-host" default-web-module="foo.war" alias="localhost, foo.com, wwww.foo.com"/>
</server>
<server name="bar-server">
<http-listener name="bar-listener" proxy-address-forwarding="true" socket-binding="bar-http"/>
<host name="bar-host" default-web-module="bar.war" alias="localhost, bar.com, wwww.bar.com"/>
</server>
<socket-binding name="foo-http" port="${jboss.http.port:8080}"/>
<socket-binding name="bar-http" port="${jboss.http.port:8181}"/>
您还需要一个JBoss的Web。xml在您的项目中:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
<server-instance>foo-server</server-instance>
<virtual-host>foo-host</virtual-host>
<context-root>/</context-root>
</jboss-web>
这两个服务器是必需的,因为您无法将套接字绑定添加到虚拟主机。所以这里有一些小的开销,但与运行两个完整的应用程序服务器相比微不足道。
编辑1:
它只是发生,我认为这是可能甚至没有必要使用不同的端口和使用每一个deplyoment暗潮服务器可能是多余的,因为好。
由于代理能够将客户端请求的主机转发到应用程序服务器,因此承运人应该能够通过别名参数挑选合适的虚拟主机。
所以基本上,代理服务器会将任何请求转发到foo.com或bar.com到localhost:8080,然后让AS进行排序。
我没有测试过这,但这里是它如何可以工作(同样,这是Wildfly 10.0):
<server name="default-server">
<http-listener name="http" proxy-address-forwarding="true" socket-binding="http"/>
<host name="foo-host" default-web-module="foo.war" alias="foo.com, wwww.foo.com"/>
<host name="bar-host" default-web-module="bar.war" alias="bar.com, wwww.bar.com"/>
</server>
和JBoss-web.xml中就输了服务器标签:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
<virtual-host>foo-host</virtual-host>
<context-root>/</context-root>
</jboss-web>
在这种情况下,根本不会有任何开销。
编辑2:
刚刚测试过的简单的方法 - 是的,它的工作原理:)
注:这也可以用'Filter'完成不到一半的代码。 – BalusC 2012-03-29 20:22:04
@BalusC,今天我即将实施您的过滤器解决方案,但被您的帖子被删除的事实吓跑了)) – Osw 2012-03-29 20:32:23
我只是将其删除,因为它毕竟不值得付出努力。 – BalusC 2012-03-30 15:29:50