Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 在另一个应用程序中删除会话范围的托管bean_Jsf 2_Form Submit_Managed Bean_Session Scope - Fatal编程技术网

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

Jsf 2 在另一个应用程序中删除会话范围的托管bean,jsf-2,form-submit,managed-bean,session-scope,Jsf 2,Form Submit,Managed Bean,Session Scope,我有一个JSF2.0应用程序(App#1),它有一个托管会话范围的bean,执行一些业务逻辑,如验证等。单击“继续”按钮后,会向用户显示另一个普通html表单页面,单击该页面上的“提交”按钮将表单提交到另一个应用程序(App#2)。应用程序2完成工作后,用户将看到应用程序3中的一个页面。请注意,所有这些都发生在同一个浏览器选项卡中 在App#3(它也是一个jsf2.0应用程序)中,我想删除App#1的会话范围bean。我该怎么做?我尝试了以下选项,但似乎都不起作用 //First approac

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

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

//First approach
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("app1Bean");
对于上面的代码行,我将得到null

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

这里也是空的

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


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

如果代码不清楚,很抱歉,我在代码中放了一个Sysout,表示如果(FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get(“app1Bean”)==null){System.out.println(“app1Bean为null”);}这个Sysout显示在控制台上,这些应用程序在服务器上配置为使用同一个会话?听起来不是,但可能对您来说不是很明显,只是要求确定一下。我几乎可以肯定没有设置这些设置(Websphere 7.0).这是实现我想要的唯一途径吗?