是否可以声明实体属性以便将其重置为某个默认值,但前提是重新启动托管 ejb.jar 的服务器?
这些属性用于反映某些连接的客户端的状态,这些客户端将在重新启动时断开连接。
也许我应该用不同的解决方案来解决这个问题,但认为这个问题仍然有效。
是否可以声明实体属性以便将其重置为某个默认值,但前提是重新启动托管 ejb.jar 的服务器?
这些属性用于反映某些连接的客户端的状态,这些客户端将在重新启动时断开连接。
也许我应该用不同的解决方案来解决这个问题,但认为这个问题仍然有效。
如果你有一个在应用程序启动/停止时触发的钩子呢?像ServletContextListener一样?停止时将感兴趣的条目(用户)保存到中间数据库表中,然后开始重新连接。
我使用 @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();
}
}