Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.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
Session 即使我在页面上进行交互,会话也会丢失_Session_Jsf_Primefaces - Fatal编程技术网

Session 即使我在页面上进行交互,会话也会丢失

Session 即使我在页面上进行交互,会话也会丢失,session,jsf,primefaces,Session,Jsf,Primefaces,我正在使用primefaces 3.4.2 Javax.faces 2.1.9 My web.xml <session-config> <session-timeout>45</session-timeout> </session-config> <p:idleMonitor id="idMonitorSession" timeout="2400000" onidle="dlgMensajeSessi

我正在使用primefaces 3.4.2 Javax.faces 2.1.9

My web.xml

<session-config>
    <session-timeout>45</session-timeout>
</session-config>

<p:idleMonitor id="idMonitorSession" timeout="2400000"
                onidle="dlgMensajeSessionExp.show()" />

<p:dialog header="Sesion Ended" resizable="false"
                widgetVar="dlgMensajeSessionExp" width="300" height="120"
                modal="true" closable="false" appendToBody="true">
                <center>
                    <h:outputText value="Session Ended" />
                    <h:form id="sessionForm">
                        <h:commandLink actionListener="#{user.exit()}">
                            <h:graphicImage style="border:0px" value="/resources/images/login.png"
                                width="80px" />
                        </h:commandLink>
                    </h:form>
                </center>
            </p:dialog>

45
然而,即使我在页面中工作,会话也会丢失,你知道为什么会发生这种情况吗


Web服务器是Websphere 7.0.0.17

与页面交互的方式,服务器不会通过ajax调用,或者完整的表单post不会针对会话服务器端重置超时。将ajax事件用于idleMonitor应该可以做到这一点

<p:idleMonitor id="idMonitorSession" timeout="2400000"
            onidle="dlgMensajeSessionExp.show()">     
  <p:ajax event="active"/>
</p:idleMonitor>

编辑:我注意到移动鼠标时不会触发“活动”事件,用户需要与页面进行足够的交互以触发此事件。如果保持服务器与页面同步非常重要,那么ajax调用的频率将比此事件创建的频率更高。您不必在服务器端调用noop操作,设置事件类型就足够了

另一种可能是在发生表明用户正在积极使用页面的交互类型时使用ajax事件。例如,在文本区域中键入长消息或过滤大数据表

<p:ajax event="filter" listener="#{bean.activeListener}"/>


无论哪种方式,目标都是让服务器意识到用户确实处于活动状态,而不会让服务器充斥不必要的ajax事件。

您如何在页面上进行交互?idleMonitor是一个纯客户端的东西。如果没有向服务器发送任何内容,则会话通常会过期。因此,您显示的代码和看到的行为如下expected@Kukeltje我应该添加并调用一个方法来刷新吗?你认为应该在哪里添加它?为什么?请创建一个
侦听器
对于作业是必需的吗?理论上,只要
就足够了。或者,如果
处于活动状态已经是
@BalusC的默认事件,您可以正确地认为不需要直接操作调用。我无法逃脱,就像我使用的技术堆栈在运行时不允许那样。