EntityManagerFactory emf = ResourceManager.getEntityManagerFactory(); Method getSessionFactory = emf.getClass().getMethod("getSessionFactory"); Object sessionFactory = getSessionFactory.invoke(emf); Method getStatistics = sessionFactory.getClass().getMethod("getStatistics"); Object statistics = getStatistics.invoke(sessionFactory); out.print("<p>Evict any query result sets cached in the default query cache region."); Method evictQueries = sessionFactory.getClass().getMethod("evictQueries"); evictQueries.invoke(sessionFactory); out.print("<br>Done."); out.print("<p>Evict entities from second-level cache."); Method getEntityNames = statistics.getClass().getMethod("getEntityNames"); String[] entityNames = (String[]) getEntityNames.invoke(statistics); Method evictEntity = sessionFactory.getClass().getMethod("evictEntity", String.class); for(String entityName : entityNames) { evictEntity.invoke(sessionFactory, entityName); } out.print("<br>Done for " + entityNames.length + " entities."); out.print("<p>Evict all entries from the second-level cache."); Method getCollectionRoleNames = statistics.getClass().getMethod("getCollectionRoleNames"); String[] collectionRoleNames = (String[]) getCollectionRoleNames.invoke(statistics); Method evictCollection = sessionFactory.getClass().getMethod("evictCollection", String.class); for(String collectionRoleName : collectionRoleNames) { evictCollection.invoke(sessionFactory, collectionRoleName); } out.print("<br>Done for " + collectionRoleNames.length + " entries."); out.print("<p>Evict any query result sets cached in the named query cache region."); Method getSecondLevelCacheRegionNames = statistics.getClass().getMethod("getSecondLevelCacheRegionNames"); String[] secondLevelCacheRegionNames = (String[]) getSecondLevelCacheRegionNames.invoke(statistics); evictQueries = sessionFactory.getClass().getMethod("evictQueries", String.class); for(String secondLevelCacheRegionName : secondLevelCacheRegionNames) { evictQueries.invoke(sessionFactory, secondLevelCacheRegionName); } out.print("<br>Done for " + secondLevelCacheRegionNames.length + " entries.");
|