您可以在模块加载时执行类似的代码。
创建一个每 2 分钟运行一次的计时器并设置会话过期标志:
private static Timer SESSION_TIMER = new Timer() {
public void run() {
SessionFactory.putValue(SesisonKey.SESSION_EXPIRED,
true);
}
};
使用此方法在模块加载时调用此方法来更新计时器会话,如下所示:
public static void renewTimer() {
if (CLIENT_SIDE_TIMER != null) {
CLIENT_SIDE_TIMER.cancel();
SessionFactory.getClientInstance().put(
SesisonKey.SESSION_EXPIRED, false);
//CLIENT_SIDE_TIMER.schedule(250 * 60 * 20);
//1 Minute = 60000 Milliseconds
CLIENT_SIDE_TIMER.schedule(60000 * 2);
}
}
NativePreviewHandler 处理程序捕获鼠标事件并检查会话是否已过期或未标记。
final NativePreviewHandler nativeHandler = new NativePreviewHandler() {
@Override
public void onPreviewNativeEvent(NativePreviewEvent event) {
preventBack();
if (SessionFactory
.getValue(SesisonKey.CLIENT_SESSION_EXPIRED) != null) {
boolean expire = (Boolean) SessionFactory
.getValue(SesisonKey.CLIENT_SESSION_EXPIRED);
if (expire) {
boolean show= false;
//logout session code
ClientSideTimers.renewSessionTimer();
}
}
}
};
Event.addNativePreviewHandler(nativeHandler);
如果您的屏幕稳定了 2 分钟,它将通过计时器将过期会话变量值设置为 false,如果该值为 false,则注销。
SESSION_EXPIRED 是用于会话过期检查的常量变量,而 SessionFactory 是我的自定义工厂代码。您只需忽略我的项目模式所使用的变量即可。你只需设置一个常数,不能超过这个常数。如果还有任何疑问,请告诉我。