我正在使用Java,hibernate,SEAM和Richfaces。
我在数据库中保存了一个注册表明用户正在登录,现在我需要在服务器会话到期时保存在数据库中。 我实现了一个实现HttpSessionListener的类。我在方法sessionDestroyed中添加了一些像下一个:
...
historia.setFechafinal(new Date());
historia.setGlosa("test");
historia.setTiempo("tiempo");
entityManager.persist(historia);
...
当我想要保留对象历史记录时,会抛出错误。这应该是因为组件entityManager因会话已过期而不存在。
会话过期后如何在数据库中写入?我是这个主题的新秀。
谢谢你
答案 0 :(得分:1)
您可以尝试使用Seam的Run As功能。我们将它用于在没有登录用户的情况下在后台运行的某些预定进程。
http://docs.jboss.org/seam/2.2.2.Final/reference/en-US/html/security.html#d0e13810
答案 1 :(得分:0)
您可以使用观察者,每当http会话被销毁时都会触发该方法
@In User user; //User stored in session scope
@Observer("org.jboss.seam.preDestroyContext.SESSION")
public void userSessionDestroy(){
//do something with User here
}