2012-08-29 123 views
0

共享庫例如:管理在碼頭web服務器

我有一個伯臨時域

www.product.com 

對於每個客戶端我需要有單獨的子域映射到具有相同的端口相同的服務器(80),但具有不同的實例名(不同.wars文件)

我使用Apache服務器作爲反向代理用於映射碼頭實例

www.client1.product.com 
www.client2.product.com 
www.clientn.product.com 

正如我知道如果我開始碼頭例如,每個將在單獨的端口開始無是

client1 war will start at port 3001 
client2 war will start at port 3002 
client3 war will start at port 3003 

更新:

我的架構比較瞭解,如果客戶機程序碼頭實例上運行由於運行時異常或內存泄漏或手動重啓,端口3002進入停機狀態,所有其他碼頭實例獨立運行(類似於谷歌引擎背後的架構使用碼頭)

如果我訪問

www.client4.product.com,我需要得到碼頭的應用程序在端口上運行3004

所以在內部下設有獨立的端口獨特的碼頭實例上運行的每個客戶端的戰爭不就是

**What my question is all clients using same code base but with different database names , so libraries used in all client war files are same.**

1)同一個庫在內存中加載n次(即n個jetty實例)?

2)Can jetty可以共享類似於tomcat的lib文件夾,如果需要步驟。

回答

1

將每個庫分別加載到內存中。不同的JVM進程在同一臺機器上不會共享任何內容,只要載入了什麼類,使用的內存空間等等。

+0

請問您可以深入解釋一下,與QA相比http://stackoverflow.com/questions/267953/managing-libraries-in-tomcat – Sam

+1

您正在運行四個不同的Jetty進程,它們彼此不知道。沒有機會將.jar加載到內存中。爲此,您必須運行一個帶有4個webapps的Jetty JVM進程,但將常用的JAR放入一個普通的類加載器中通常是這些webapps的一個難題,因爲它不值得依賴令人頭痛的是要節省幾百KB或幾MB的RAM。 –

+0

感謝馬特澄清我。 – Sam