收集 Hibernate/Ehcache 统计信息并在基于 Spring 的设置中通过 JMX 公开它们似乎很容易。互联网有很多资源可以帮助您,例如http://snippets.dzone.com/posts/show/11159 http://snippets.dzone.com/posts/show/11159
然而,所有这些文章都假设人们正在使用某种 Hibernate 会话工厂。我不是 - 我的实体是 JPA 注释的并且我使用javax.persistence.EntityManager
。
如果我部署到 Java EE 容器,我可能能够通过 JNDI 获取 Hibernate 会话工厂,如此处所述http://internna.blogspot.com/2007/08/hibernate-statistics-in-enterprise-5.html http://internna.blogspot.com/2007/08/hibernate-statistics-in-enterprise-5.html但我在Tomcat上...
这件事该怎么办呢?我还没有想出解决办法。
如果我有一个 Ehcache 的引用CacheManager
我可以尝试这样的事情:
<context:mbean-server />
<bean class="net.sf.ehcache.management.ManagementService" init-method="init">
<constructor-arg ref="..myCacheManager.."/>
<constructor-arg ref="mbeanServer"/>
<constructor-arg value="true"/>
<constructor-arg value="true"/>
<constructor-arg value="true"/>
<constructor-arg value="true"/>
</bean>
由于缓存管理器是由 Hibernate 创建的(即它不是 Spring bean),因此它无法工作。我尝试用
<constructor-arg><bean id="cacheManager" class="net.sf.ehcache.CacheManager" factory-method="getInstance"/></constructor-arg>
希望我能以某种方式抓住正确的实例。也不起作用,因为这实际上会创建一个新的缓存管理器实例。
我最近构建了一个基于 Spring 的 Web 应用程序示例,它非常干净地为最新版本的 Spring、Hibernate 和 Ehcache 启用了 JMX。
它具有基于 EntityManager 的访问和 DAO 访问(包括事务!)的示例。它还展示了如何进行基于注释的注入,以避免必须使用 Spring 的 bean xml 配置。甚至还有一个使用注释的基于 SpringMVC 的示例 servlet。基本上,这是一个基于 Spring 的版本,是一个相当强大的应用程序服务器,运行在任何 servlet 引擎之上。
它还没有记录下来,但我很快就会记录下来。看一下配置文件和源码应该就很清楚了。
这样做背后的动机是,我厌倦了所有疯狂的博客文章以及 50 种不同的设置方法,并最终制作了一个人们可以使用的简单来源。它位于 github 上,因此您可以随意分叉该项目并用它做任何您想做的事情。
https://github.com/lookfirst/fallback https://github.com/lookfirst/fallback
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)