2014-03-05 62 views
0

我從2天開始搜索解決方案如何將多個上下文映射到單個部署的應用程序? 讓我們來看看更多的細節... 我們有一個應用程序(讓我們稱之爲全部)應該部署一次並引用多個上下文根,以便每個客戶可以使用不同的URL訪問這個應用程序。將多個上下文根映射到單個應用程序

ex: http://localhost:8080/Customer1 ===> webapp(All) 
    http://localhost:8080/Customer2 ===> webapp(All) 

我試過使用Apache的ProxyPass and ProxyPassReverse選項,如下所示。 但是,當服務器接收到來自客戶端的請求時,它可以看到在這種情況下在服務器上部署的應用程序的上下文路徑ALL(而不是CustomerX)。在服務器端,我需要知道哪些客戶(上下文根)要求,這樣我可以加載客戶指定的登錄頁面,數據等。

ProxyPass /Customer1 http://localhost:8083/ALL 
    ProxyPassReverse /Customer1 http://localhost:8083/ALL 
    ProxyPass /Customer2 http://localhost:8083/ALL 
    ProxyPassReverse /Customer2 http://localhost:8083/ALL 

然後後來我才知道有關WebLogic的Sahred庫的概念,它的工作..! 在weblogic中,我們可以將應用程序部署爲共享庫,並將其與來自不同Web應用程序(虛擬)的不同上下文根引用。 所以在我的情況下,我需要創建虛擬Web應用程序(對於客戶1,客戶2 ...客戶n)並從這些應用程序中引用共享庫應用程序。 如果我們採用共享庫的方法,有什麼優點和缺點?內存消耗,會話管理如何? 有什麼建議?有沒有其他解決方案?

回答

0

這些網絡應用程序不會真的是虛擬的。對於每個應用程序,服務器應該創建一個特定的類加載器和其他所有東西所以,使用這種方法,即使使用共享庫,也會消耗更多的內存。實際上,您也可以隔離共享庫以避免一個客戶端「打擾」另一個客戶端。理想情況下,所有客戶都應該完全孤立,因爲一個客戶不應該爲另一個客戶的麻煩付費(例如:資源過度使用)。

  • 相同的web應用: 每個請求 共享資源隔離:僅使用一個版本

  • 不同web應用分離的共享:計算資源,操作系統,應用程序服務器資源,類,對象池等 注lib 每個類加載器的隔離 共享資源:計算資源,操作系統,應用程序服務器資源,共享庫中的類代碼 (部署/版本同步) 注意:只有一個版本在

  • 不同的webapps沒有共享庫每一個classloader 共享資源 隔離:計算資源,操作系統和應用程序服務器資源 (某種部署隔離) 開銷:Web應用程序的足跡

  • 不同的應用服務器 每個(Java)虛擬機的隔離度 共享資源:計算資源(可能以某種方式隔離)和操作系統 開銷:應用程序服務器佔用空間+ Web應用程序佔用空間

  • 不同的虛擬機:計算資源(可隔離) 開銷:OS足跡(通過智能的虛擬化在某種程度上最小化)+ Web應用程序的足跡

每(OS)的虛擬機 共享資源 隔離計算資源:磁盤空間,I/O,CPU和內存

+0

感謝您的回覆。實際上,我們需要此解決方案用於ASP模型部署,其中所有客戶(客戶)共享公共資源併爲其付費。我同意你那臺服務器每個應用都有自己的類加載器。但在這種情況下,當服務器收到請求時會發生什麼,它會直接將該請求傳遞給共享應用程序?或中間的應用程序(在這種情況下,虛擬),然後共享應用程序? – SMR

相關問題