User development,

A new message was posted in the thread "Hibernate tools provides Hibernate 
statistics in Eclipse?":

http://community.jboss.org/message/524938#524938

Author  : Arbi Sookazian
Profile : http://community.jboss.org/people/asookazian

Message:
--------------------------------------------------------------
Does Hibernate tools provide Hibernate statistics in Eclipse (perhaps in the 
Hibernate console)?
 
I am currently using a JMX MBean to get dynamic data on Hibernate statistics 
for my EntityManager.
 
@Name("hibernateUtils")
@AutoCreate
public class HibernateUtils {
 
      @In EntityManager entityManager;
    
      public Statistics getStatistics() {    
          return 
((HibernateSessionProxy)entityManager.getDelegate()).getSessionFactory().getStatistics();
      }
      
      public SessionFactory getSessionFactory() {
          return 
((HibernateSessionProxy)entityManager.getDelegate()).getSessionFactory();
      }
 
}
 
 
@Name("jmxHibernateStatistics")
@AutoCreate
public class JmxHibernateStatistics {
    
    @In HibernateUtils hibernateUtils;
    @Logger Log log;
 
    public void installHibernateMBean() {
        Statistics stats = hibernateUtils.getStatistics(); 
        stats.logSummary();
        log.info("new Date(stats.getStartTime()) = "+new 
Date(stats.getStartTime()));
        
        String[] myQueries = stats.getQueries();
        for(int i = 0; i < myQueries.length; i++){
            log.info("myQueries["+i+"]: "+myQueries[i]);
        }
        
        //get your SF
        SessionFactory sf = hibernateUtils.getSessionFactory();
        //get the available MBean servers
        List list = MBeanServerFactory.findMBeanServer(null);
        //take the first one
        MBeanServer server = (MBeanServer) list.get(0);
 
        //build the MBean name
        ObjectName on = null;
        try{
            on = new ObjectName("Hibernate:type=statistics,application=sample");
        }
        catch(MalformedObjectNameException e){
            log.error(e);
        }
        StatisticsService mBean = new StatisticsService();
        mBean.setSessionFactory(sf);
        try {
            server.registerMBean(mBean, on);
        } catch (InstanceAlreadyExistsException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (MBeanRegistrationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (NotCompliantMBeanException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
 
        //WARNING: 
        
        /*
         * When the SessionFactory is closed, we need to unregister the MBean
 
            //get the available MBean servers
            ArrayList list = MBeanServerFactory.findMBeanServer(null);
            //take the first one
            MBeanServer server = (MBeanServer) list.get(0);
            server.unregisterMBean(on);
            
            You can add this code to you HibernateUtil like class.
         */
    }
}

--------------------------------------------------------------

To reply to this message visit the message page: 
http://community.jboss.org/message/524938#524938


_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to