42 lines
1.4 KiB
Java
42 lines
1.4 KiB
Java
|
public interface PerfStatistics {
|
||
|
String getOpenJPAStatistics();
|
||
|
String getEntityClasses();
|
||
|
}
|
||
|
|
||
|
@Stateless
|
||
|
public class PerfStatisticsImpl implements PerfStatistics {
|
||
|
@Inject
|
||
|
private EntityManagerJPAFactory entityManagerFactory;
|
||
|
private OpenJPAEntityManagerFactory openJPAEntityManagerFactory;
|
||
|
|
||
|
@PostConstruct
|
||
|
public void init() {
|
||
|
openJPAEntityManagerFactory = OpenJPAPersistence.cast(entityManagerFactory.getEntityManager().getEntityManagerFactory());
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public String getOpenJPAStatistics() {
|
||
|
StoreCache cache = openJPAEntityManagerFactory.getStoreCache();
|
||
|
|
||
|
CacheStatistics st = cache.getStatistics();
|
||
|
return String.format("{ \"ReadCount\": %d, \"HitCount\": %d, \"WriteCount\": %d }", st.getReadCount(), st.getHitCount(), st.getWriteCount());
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public String getEntityClasses() {
|
||
|
StringBuilder res = new StringBuilder("{ \"Entities\": [");
|
||
|
|
||
|
EntityManagerFactory emf = openJPAEntityManagerFactory;
|
||
|
EntityManager em = emf.createEntityManager();
|
||
|
Cache cache = emf.getCache();
|
||
|
for(EntityType<?> entityType : em.getMetamodel().getEntities()) {
|
||
|
Class<?> cls = entityType.getBindableJavaType();
|
||
|
res.append(String.format("\"%s\", ", cls.getCanonicalName()));
|
||
|
}
|
||
|
res.append("\"\"], \"Cache\": \"");
|
||
|
res.append(cache.toString());
|
||
|
res.append("\" }");
|
||
|
return res.toString();
|
||
|
}
|
||
|
}
|