Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA-在服务器重新启动时重置实体属性_Java_Eclipselink - Fatal编程技术网

Java JPA-在服务器重新启动时重置实体属性

Java JPA-在服务器重新启动时重置实体属性,java,eclipselink,Java,Eclipselink,是否可以声明实体属性,以便将其重置为某个默认值,但前提是托管ejb.jar的服务器重新启动 属性用于反映某些已连接客户端的状态,这些客户端将在重新启动时断开连接 也许我应该用另一种解决方案来解决这个问题,但我认为这个问题仍然有效 如果您有一个在应用程序启动/停止时触发的钩子呢?像ServletContextListener一样?停止时,将感兴趣的条目(用户)保存到intermediar DB表中,开始时,只需重新连接即可。我使用了@Singleton和@Startup注释EJB,测试似乎有效 @

是否可以声明实体属性,以便将其重置为某个默认值,但前提是托管ejb.jar的服务器重新启动

属性用于反映某些已连接客户端的状态,这些客户端将在重新启动时断开连接


也许我应该用另一种解决方案来解决这个问题,但我认为这个问题仍然有效

如果您有一个在应用程序启动/停止时触发的钩子呢?像ServletContextListener一样?停止时,将感兴趣的条目(用户)保存到intermediar DB表中,开始时,只需重新连接即可。

我使用了@Singleton和@Startup注释EJB,测试似乎有效

@Singleton
@Startup
public class ClientResetBean {

    // Injected database connection:
    @PersistenceContext private EntityManager em;


    @PostConstruct
    private void resetClientState() {
        Query query = em.createQuery("UPDATE Client c SET c.online = false");
        query.executeUpdate();
    }
}

通常情况下,容器(HTTP、EJB)允许您将侦听器与其生命周期相关联,这样您就可以在Web应用程序启动、停止等时实现要执行的操作……听起来像是一种前进的方式。但当我查找文档时,我并没有发现关于容器生命周期的太多信息,只找到ejb/实体。例如,是否可以使用一种方法将em连接到容器生命周期?您不喜欢Eugene的解决方案中的什么?即使只回复.war,它也会重置值。然而,我在另一个问题中发现,单例ejb可以与@startup一起使用,因为它将在部署时构建。