2011-09-14 41 views
2

我有jsf 2.0 web應用程序(使用ejb)可以爲多個域服務。我需要根據用戶來自的域名加載數據。所以我必須獲取域名,調用ejb服務並在用戶會話中保存數據。此外,當用戶去domainA.com,然後更改爲domainB.com我應該創建新的會話。jsf 2.0具有多個域的單個web應用程序

這可以怎麼做? Servlet,過濾器,階段監聽器,託管bean中的構造? 或者也許創建多個網絡應用程序,每個域的一個?

回答

-1

如果您打算使用完全限定的域名而不是子域名,我建議使用每個域的單獨部署,這將解決您創建會話時的問題,並且不應該很困難。你可以得到的域名你的servlet或具有對Request對象的其他組件內,從與請求本身相關的信息:

 // Get client's hostname 
     String hostname = req.getRemoteHost(); // hostname 

這種方法

返回客戶端發送的主機名請求。如果名稱 未知,則返回一個空字符串。發出請求的客戶端的完全合格域名 (例如「xyzws.com」)。如果無法確定,則返回IP地址 。

+1

'HttpServletRequest.getServerName()'是OP需要的 - _receiving_域。 'getRemoteHost()'在公共互聯網環境中幾乎沒有用處。 – home

+0

使用一個部署將更加靈活和易於維護。我想了解servlet(對於每個url/*)並檢查用戶會話中是否存在遠程主機==主機(如果會話存在),如果不是,我會終止舊會話並啓動新會話。這是個好主意嗎? – mm1

相關問題