使用JMX运行Hibernate 4.3(无弹簧)

Sim*_*n B 5 java hibernate jmx

我正在使用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";
Run Code Online (Sandbox Code Playgroud)

我已将jmx.enabled true设置添加到我的hibernate.cfg.xml文件中,但这没有任何效果.

我还不确定该如何解决这个问题.

任何帮助非常感谢

f.c*_*sen 9

在重构hibernate之后似乎是一个bug.有关详细信息,请参阅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);
}
Run Code Online (Sandbox Code Playgroud)