我有一个java web应用程序部署在Jboss 6.1.0上,它使用了infinispan 5.2.6.Final。 我想这个指南Infinispan - set per entity expiration.lifespan
http://infinispan.org/docs/5.2.x/user_guide/user_guide.html#_advanced_configuration_2
我的实体Bean com.myenterprise.myproject.dal.ejb.entity.RefStatus以下设置每个实体的具体expiration.lifespan。
该指南规定如下:
您也可以在覆盖逐出/到期设置每个实体/集合 类型的基础上以这样的方式使被覆盖的设置只afftect特定 实体(即COM。 acme.Person)或集合类型(即com.acme.Person.addresses)。 例如:
<property name="hibernate.cache.infinispan.com.acme.Person.expiration.lifespan" value= "65000"/>
所以,我已经添加了以下元素,以我的persistence.xml,以减少寿命至10毫秒用于测试目的,以微调稍后:
<property name="hibernate.cache.infinispan.com.myenterprise.myproject.dal.ejb.entity.RefStatus.expiration.lifespan" value= "10"/>
该设置不会产生任何效果,寿命仍然是默认值。
你知道我必须如何设置persistence.xml来成功覆盖默认的过期寿命吗? 设置
<property name="hibernate.cache.infinispan.entity.expiration.lifespan" value= "10"/>
它的工作原理,但它会影响所有的实体缓存,这是不是我想要的。
下面是我的application.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" version="2.0">
<persistence-unit name="myProject_dal_PU" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:jboss/datasources/myProject-DataSource</jta-data-source>
<shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode>
<properties>
<property name="hibernate.archive.autodetection" value="class" />
<property name="hibernate.bytecode.use_reflection_optimizer" value="true" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLInnoDBDialect" />
<property name="hibernate.show_sql" value="false" />
<property name="hibernate.format_sql" value="false" />
<property name="hibernate.cache.use_second_level_cache" value="true" />
<property name="hibernate.cache.use_minimal_puts" value="true" />
<property name="hibernate.cache.use_query_cache" value="true" />
<property name="hibernate.cache.infinispan.com.myenterprise.myproject.dal.ejb.entity.RefStatus.expiration.lifespan" value= "10"/>
</properties>
</persistence-unit>
</persistence>
谢谢。
顺便说一句,我正在更新文档,添加了这个缺失的信息。 –
不错的文章/解释 –
@GalderZamarreño它没有与您的答案一起工作,请找到我做的配置更改。在我的情况下人员实体停留在demo.war - > my-entity.jar - > com.demo.model.Person.class ...添加以下属性到我的persistence.xml 对于测试pupose我使用jconsole - >统计 - >条目。一段时间后由于闲置实时存储的实体正在被驱逐,但我们希望保留在高速缓存中而没有寿命和超时(基本上没有到期)。 –
prem