我面臨同樣的問題,並試圖解決方案。雖然它或多或少的工作,但仍有一些小故障。說實話,感覺更像是與症狀對抗,而不是治療疾病。
那麼這裏就是終於爲我工作:
而不是通過路徑分開設置的部署,我分配每個部署到自己的端口:
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