【问题标题】:jsf 2.0 single web-application with multiple domains具有多个域的 jsf 2.0 单个 Web 应用程序
【发布时间】:2011-09-14 10:39:34
【问题描述】:

我有 jsf 2.0 Web 应用程序(带有 ejb),它将服务于多个域。我需要根据用户来自的域名加载数据。所以我必须获取域,调用 ejb 服务并将数据保存在用户会话中。此外,当用户转到 domainA.com 然后更改为 domainB.com 时,我应该创建新会话。

如何做到这一点?托管 bean 中的 Servlet、过滤器、阶段侦听器、后期构造? 或者可以创建多个网络应用,每个域一个?

【问题讨论】:

    标签: jsf jakarta-ee


    【解决方案1】:

    如果您要使用完全限定的域而不是子域,我建议您为每个域单独部署,这可以解决您的会话创建问题,并且应该不难。您可以从与请求本身关联的信息中获取 servlet 或其他有权访问 Request 对象的组件中的域名:

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

    这个方法

    返回发送请求的客户端的主机名。如果名字 未知,返回一个空字符串。完全限定域名 (例如“xyzws.com”)发出请求的客户端。 IP 地址 如果无法确定,则返回。

    【讨论】:

    • HttpServletRequest.getServerName() 是 OP 需要的 - receiving 域。 getRemoteHost() 在公共互联网环境中几乎毫无用处。
    • 使用一个部署会更灵活且更易于维护。我考虑servlet(对于每个url / *)并检查用户会话中是否远程主机==主机(如果会话存在),如果不存在,我将终止旧会话并启动新会话。这是个好主意吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-18
    相关资源
    最近更新 更多