2011-09-14 75 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

相关问题