这一节,我们看看JMX和Hibernate的关系。
这一节,我们看看JMX和Hibernate的关系。
Java Management Extensions (JMX)和Hibernate
JMX是管理JAVA应用程序和组件的标准API。
Hibernate为JMX提供了两个MBean:HibernateServiceMBean和StatisticsServiceMBean。
这两个都是接口,位于org.hibernate.jmx包里。在同一个包里还存在着实现这些接口的实现类HibernateService和StatisticsService类。
HibernateServiceMBean为Hibernate configuration属性提供了getter和setter方法,包括数据源,事务处理,缓存方言以及一起的数据库相关设置等。它同时也提供了一个添加映射文件到configuration的机制。管理员能够使用JMX管理控制台来改变Hibernate的configuration。
当HibernateServiceMBean启动时,这个MBean将从它的属性和映射文件中来创建一个Configuration对象,然后创建一个SessionFactory对象。这个SessionFactory对象绑定了JMX MBean指定的JNDI地址,因此我们的JAVA应用能够使用标准的JNDI调用来得到这个session factory。
有关另一个统计用的MBean(StatisticsServiceMBean),Hibernate能够将一些性能方面的信息加到日志中,这些性能包括查询语句的执行,缓存和针对对象实体的操作。使用JMX控制台,管理员能够启动统计功能(enable statistics)并通过控制台看到一个实时更新的视图。这就有个好处是:管理员或者其他非开发人员能够通过标准化的JMX控制台,在运行时更改属性信息。这使得JMX可以让我们的应用和配置实现松耦合。
如果大家对JMX不是很熟悉,可以试一下使用开源的JBOSS应用服务器,它使用JMX来管理它内部的组件。我们能够通过JBOSS的管理控制台来管理Hibernate和其他MBean。