我正在使用Hibernate 4.3和Guice 1.0运行Java Webapp(wicket 6.13)
我正在尝试配置Hibernate,以便可以通过JMX框架访问运行时信息。
我 没有 使用spring,谁能指出我如何在hibernate 4.3上手动启用JMX。
我四处寻找JmxService,JmxServiceInitiator,JmxServiceImpl,StandardServiceRegistryImpl
我还在AvailableSettings中找到了以下设置:
"hibernate.jmx.enabled"; "hibernate.jmx.usePlatformServer"; "hibernate.jmx.agentId"; "hibernate.jmx.defaultDomain"; "hibernate.jmx.sessionFactoryName";
我已将jmx.enabled true设置添加到我的hibernate.cfg.xml文件中,但这没有任何效果。
我仍然不确定该怎么做。
任何帮助表示赞赏
重构为hibernate状态后,似乎是一个错误。有关详细信息,请参见https://hibernate.atlassian.net/browse/HHH-6190
这是我使用的一种变通方法,利用Java动态代理来代表来自hibernate状态的统计信息接口以及默认的平台mbean服务器:
@MXBean public interface StatisticsMXBean extends Statistics { } public void initStatistics(SessionFactory sessionFactory) { ObjectName statsName = new ObjectName("org.hibernate:type=statistics"); MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer(); final Statistics statistics = sessionFactory.getStatistics(); statistics.setStatisticsEnabled(true); Object statisticsMBean = Proxy.newProxyInstance(getClass().getClassLoader(), new Class<?>[] { StatisticsMXBean.class }, new InvocationHandler() { @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { return method.invoke(statistics, args); } }); mbeanServer.registerMBean(statisticsMBean, statsName); }