All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.sf.ehcache.hibernate.management.impl.HibernateStatsImpl Maven / Gradle / Ivy

Go to download

Ehcache is an open source, standards-based cache used to boost performance, offload the database and simplify scalability. Ehcache is robust, proven and full-featured and this has made it the most widely-used Java-based cache.

There is a newer version: 2.10.9.2
Show newest version
/**
 *  Copyright Terracotta, Inc.
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

package net.sf.ehcache.hibernate.management.impl;

import java.util.ArrayList;
import java.util.List;

import javax.management.MBeanNotificationInfo;
import javax.management.NotCompliantMBeanException;
import javax.management.Notification;
import javax.management.openmbean.CompositeData;
import javax.management.openmbean.TabularData;

import net.sf.ehcache.hibernate.management.api.HibernateStats;

import org.hibernate.SessionFactory;
import org.hibernate.stat.Statistics;

/**
 * Implementation of {@link HibernateStats}
 * 
 * 

* * @author Abhishek Sanoujam * */ public class HibernateStatsImpl extends BaseEmitterBean implements HibernateStats { private static final double MILLIS_PER_SECOND = 1000; private static final MBeanNotificationInfo NOTIFICATION_INFO; private final SessionFactory sessionFactory; static { final String[] notifTypes = new String[] {}; final String name = Notification.class.getName(); final String description = "Hibernate Statistics Event"; NOTIFICATION_INFO = new MBeanNotificationInfo(notifTypes, name, description); } /** * Constructor accepting the backing {@link SessionFactory} * * @param sessionFactory * @throws NotCompliantMBeanException */ public HibernateStatsImpl(SessionFactory sessionFactory) throws NotCompliantMBeanException { super(HibernateStats.class); this.sessionFactory = sessionFactory; } /** * @return statistics */ private Statistics getStatistics() { return sessionFactory.getStatistics(); } /** * {@inheritDoc} * * @see net.sf.ehcache.hibernate.management.api.HibernateStats#clearStats() */ public void clearStats() { getStatistics().clear(); sendNotification(CACHE_STATISTICS_RESET); } /** * {@inheritDoc} * * @see net.sf.ehcache.hibernate.management.api.HibernateStats#disableStats() */ public void disableStats() { setStatisticsEnabled(false); } /** * {@inheritDoc} * * @see net.sf.ehcache.hibernate.management.api.HibernateStats#enableStats() */ public void enableStats() { setStatisticsEnabled(true); } /** * {@inheritDoc} * * @see net.sf.ehcache.hibernate.management.api.HibernateStats#getCloseStatementCount() */ public long getCloseStatementCount() { return getStatistics().getCloseStatementCount(); } /** * {@inheritDoc} * * @see net.sf.ehcache.hibernate.management.api.HibernateStats#getConnectCount() */ public long getConnectCount() { return getStatistics().getConnectCount(); } /** * Not supported right now * */ public long getDBSQLExecutionSample() { throw new UnsupportedOperationException("Use getQueryExecutionCount() instead"); } /** * {@inheritDoc} * * @see net.sf.ehcache.hibernate.management.api.HibernateStats#getFlushCount() */ public long getFlushCount() { return getStatistics().getFlushCount(); } /** * {@inheritDoc} * * @see net.sf.ehcache.hibernate.management.api.HibernateStats#getOptimisticFailureCount() */ public long getOptimisticFailureCount() { return getStatistics().getOptimisticFailureCount(); } /** * {@inheritDoc} * * @see net.sf.ehcache.hibernate.management.api.HibernateStats#getPrepareStatementCount() */ public long getPrepareStatementCount() { return getStatistics().getPrepareStatementCount(); } /** * {@inheritDoc} * * @see net.sf.ehcache.hibernate.management.api.HibernateStats#getQueryExecutionCount() */ public long getQueryExecutionCount() { return getStatistics().getQueryExecutionCount(); } /** * {@inheritDoc} * * @see net.sf.ehcache.hibernate.management.api.HibernateStats#getQueryExecutionRate() */ public double getQueryExecutionRate() { long startTime = getStatistics().getStartTime(); long now = System.currentTimeMillis(); double deltaSecs = (now - startTime) / MILLIS_PER_SECOND; return getQueryExecutionCount() / deltaSecs; } /** * {@inheritDoc} * * @see net.sf.ehcache.hibernate.management.api.HibernateStats#getQueryExecutionSample() */ public long getQueryExecutionSample() { throw new UnsupportedOperationException("TODO: need to impl. rates for query execution"); } /** * {@inheritDoc} * * @see net.sf.ehcache.hibernate.management.api.HibernateStats#getSessionCloseCount() */ public long getSessionCloseCount() { return getStatistics().getSessionCloseCount(); } /** * {@inheritDoc} * * @see net.sf.ehcache.hibernate.management.api.HibernateStats#getSessionOpenCount() */ public long getSessionOpenCount() { return getStatistics().getSessionOpenCount(); } /** * {@inheritDoc} * * @see net.sf.ehcache.hibernate.management.api.HibernateStats#getSuccessfulTransactionCount() */ public long getSuccessfulTransactionCount() { return getStatistics().getSuccessfulTransactionCount(); } /** * {@inheritDoc} * * @see net.sf.ehcache.hibernate.management.api.HibernateStats#getTransactionCount() */ public long getTransactionCount() { return getStatistics().getTransactionCount(); } /** * {@inheritDoc} * * @see net.sf.ehcache.hibernate.management.api.HibernateStats#isStatisticsEnabled() */ public boolean isStatisticsEnabled() { return getStatistics().isStatisticsEnabled(); } /** * {@inheritDoc} * * @see net.sf.ehcache.hibernate.management.api.HibernateStats#setStatisticsEnabled(boolean) */ public void setStatisticsEnabled(boolean flag) { getStatistics().setStatisticsEnabled(flag); sendNotification(CACHE_STATISTICS_ENABLED, flag); } /** * {@inheritDoc} * * @see net.sf.ehcache.hibernate.management.api.HibernateStats#getEntityStats() */ public TabularData getEntityStats() { List result = new ArrayList(); Statistics statistics = getStatistics(); for (String entity : statistics.getEntityNames()) { EntityStats entityStats = new EntityStats(entity, statistics.getEntityStatistics(entity)); result.add(entityStats.toCompositeData()); } TabularData td = EntityStats.newTabularDataInstance(); td.putAll(result.toArray(new CompositeData[result.size()])); return td; } /** * {@inheritDoc} * * @see net.sf.ehcache.hibernate.management.api.HibernateStats#getCollectionStats() */ public TabularData getCollectionStats() { List result = new ArrayList(); Statistics statistics = getStatistics(); for (String roleName : statistics.getCollectionRoleNames()) { CollectionStats collectionStats = new CollectionStats(roleName, statistics.getCollectionStatistics(roleName)); result.add(collectionStats.toCompositeData()); } TabularData td = CollectionStats.newTabularDataInstance(); td.putAll(result.toArray(new CompositeData[result.size()])); return td; } /** * {@inheritDoc} * * @see net.sf.ehcache.hibernate.management.api.HibernateStats#getQueryStats() */ public TabularData getQueryStats() { List result = new ArrayList(); Statistics statistics = getStatistics(); for (String query : statistics.getQueries()) { QueryStats queryStats = new QueryStats(query, statistics.getQueryStatistics(query)); result.add(queryStats.toCompositeData()); } TabularData td = QueryStats.newTabularDataInstance(); td.putAll(result.toArray(new CompositeData[result.size()])); return td; } /** * {@inheritDoc} */ public TabularData getCacheRegionStats() { List list = new ArrayList(); Statistics statistics = getStatistics(); for (String region : statistics.getSecondLevelCacheRegionNames()) { CacheRegionStats l2CacheStats = new CacheRegionStats(region, statistics.getSecondLevelCacheStatistics(region)); list.add(l2CacheStats.toCompositeData()); } TabularData td = CacheRegionStats.newTabularDataInstance(); td.putAll(list.toArray(new CompositeData[list.size()])); return td; } /** * {@inheritDoc} */ @Override protected void doDispose() { // no-op } /** * @see BaseEmitterBean#getNotificationInfo() */ @Override public MBeanNotificationInfo[] getNotificationInfo() { return new MBeanNotificationInfo[]{NOTIFICATION_INFO}; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy