0
我有一個Java Web應用程序,我通過JPA2訪問Oracle 11g數據庫(EclipseLink)如何將我的web應用程序同步到我的數據庫?
現在不得不對存儲的數據進行一些更改,但我的應用程序仍在緩存舊值。
問題:如何強制我的應用程序刪除整個緩存並從數據庫重新加載數據(應用程序正在運行時)?
我曾嘗試以下,但似乎沒有影響:
@ManagedBean
@SessionScoped
public class CacheEvictall implements Serializable {
// (...)
public void evictDatabaseCache() {
// clear persistence cache
EntityManager em = emf.createEntityManager();
if (em != null) {
LOGGER.info("Evicting database cache!");
try {
utx.begin();
emf.getCache().evict(FooClass.class);
emf.getCache().evict(BarClass.class);
// or: emf.getCache().evictAll();
em.flush();
utx.commit();
} catch (Exception e) {
e.printStackTrace();
}
} else {
LOGGER.log(Level.WARNING, "No EntityManager! Cannot evict cache!");
}
}
}
我甚至重新啓動應用程序服務器(Glassfish的V3.1.2),並重新部署應用程序本身,但同樣的效果:沒有任何反應。
預先感謝您 範特