服务器JBOSS会话过期时更新数据库

服务器JBOSS会话过期时更新数据库,jboss,richfaces,seam,Jboss,Richfaces,Seam,我正在使用Java、hibernate、SEAM和Richfaces 我在数据库中保存了一个寄存器,指示用户正在登录,现在我需要在服务器会话过期时保存在数据库中。 我实现了一个实现HttpSessionListener的类。我在方法sessionDestroyed中加入了如下内容: ... historia.setFechafinal(new Date()); historia.setGlosa("test"); historia.

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

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

            ...
            historia.setFechafinal(new Date());
    historia.setGlosa("test");
    historia.setTiempo("tiempo");
    entityManager.persist(historia);   
            ...
当我想将对象持久化时,就会抛出一个错误。这应该是因为组件entityManager不存在,因为会话已过期

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


谢谢

您可以尝试使用Seam的跑步方式功能。我们将它用于在没有登录用户的情况下在后台运行的一些计划进程


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

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

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

    //do something with User here

}