在另一个应用程序中删除会话范围的托管bean



我有一个JSF 2.0应用程序(应用程序#1),它有一个托管的Session Scoped bean,可以执行一些业务逻辑,如验证等。单击"继续"按钮后,会向用户显示另一个纯html表单页面,单击该页面上的"提交"按钮将表单提交到另一个应用程序(App#2)。在应用程序#2完成它的工作后,用户会看到应用程序#3中的一个页面。请注意,所有这些都发生在相同的浏览器选项卡中。

在App#3(也是JSF 2.0应用程序)中,我想删除App#1的会话范围的bean。我该怎么做?我尝试了以下选项,但似乎都不起作用。

//First approach
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("app1Bean");

我对上面的代码行为空

//second approach
HttpSession session = (HttpSession) FacesContext.getCurrentInstance()
        .getExternalContext().getSession(true);
session.removeAttribute("app1Bean");

此处也为Null。

默认情况下,在同一服务器上运行的多个应用程序不会共享同一会话。但是,服务器可以配置为这样做。具体如何做到这一点取决于服务器的品牌/版本。有关详细信息,请咨询您的服务器管理员。

如果不能更改服务器配置,那么最好将会话中存储的信息存储在共享数据源(例如SQL数据库)中。这样,最后一个应用程序只需删除或操作数据源中的信息,就不需要再摆弄会话范围了。

相关内容

  • 没有找到相关文章

最新更新