我发现Vaadin UI变为灰色并变为非活动状态,并且未显示会话过期消息。 此外,会话在1分钟后并不总是超时,我已将心跳设置为高于会话超时的值,因此会话应始终在心跳保持活动之前超时。
以下是我与会话到期相关的配置和代码。
<context-param>
<param-name>heartbeatInterval</param-name>
<param-value>240</param-value>
</context-param>
<session-config>
<session-timeout>1</session-timeout>
</session-config>
<servlet>
<servlet-name>VaadinExample</servlet-name>
<servlet-class>com.example.VaadinExample</servlet-class>
<init-param>
<param-name>closeIdleSessions</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
在VaadinExample servlet中:
getService().setSystemMessagesProvider(
new SystemMessagesProvider() {
@Override
public SystemMessages getSystemMessages(
SystemMessagesInfo systemMessagesInfo) {
CustomizedSystemMessages messages =
new CustomizedSystemMessages();
messages.setSessionExpiredCaption("Session Expired");
messages.setSessionExpiredMessage("You have been inactive for over 30mins, click here to reload the application.");
messages.setSessionExpiredNotificationEnabled(true);
return messages;
}
});
有什么想法吗?
答案 0 :(得分:1)
240 1 - &gt;将超时设置为60(分钟)
浏览器每240秒(每4分钟)发送1次心跳。 或者你的超时是1分钟......
如果服务器在3次尝试后没有收到1次心跳(4分钟* 3 = 12分钟)会话将被关闭..