0

我正在使用 Java、hibernate、SEAM 和 Richfaces。

我在数据库中保存了一个指示用户登录的寄存器,现在我需要在服务器会话到期时保存在数据库中。我实现了一个实现 HttpSessionListener 的类。我将方法 sessionDestroyed 放入如下:

            ...
            historia.setFechafinal(new Date());
    historia.setGlosa("test");
    historia.setTiempo("tiempo");
    entityManager.persist(historia);   
            ...

当我想保留对象历史时,会抛出一个错误。这应该是因为组件 entityManager 只是不存在,因为会话已过期。

会话过期后如何写入数据库?我是这门学科的菜鸟。

谢谢你

4

2 回答 2

1

您可以尝试使用 Seam 的 Run As 功能。我们将它用于在没有登录用户时在后台运行的一些计划进程。

http://docs.jboss.org/seam/2.2.2.Final/reference/en-US/html/security.html#d0e13810

于 2013-02-26T20:09:47.317 回答
0

您可以为此使用观察者,只要 http 会话被销毁,该方法就会被触发

@In User user; //User stored in session scope

@Observer("org.jboss.seam.preDestroyContext.SESSION")
public void userSessionDestroy(){

    //do something with User here

}
于 2014-03-14T18:44:40.987 回答