gpt4 book ai didi

java - Infinispan - 根据实体 expiration.lifespan 设置

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:46:47 33 4
gpt4 key购买 nike

我在 Jboss 6.1.0 上部署了一个 Java Web 应用程序,它使用 infinispan 5.2.6.Final。我正在尝试按照本指南设置每个实体特定的 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。

指南规定如下:

You can also override eviction/expiration settings on a per entity/collection type basis in such way that the overriden settings only afftect that particular entity (i.e. com.acme.Person) or collection type (i.e. com.acme.Person.addresses). For example:

<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>

谢谢。

最佳答案

如果您在应用程序服务器中运行,除了实体名称之外,您还必须提供部署名称和单元。因此,所有此类过期属性都需要添加前缀:hibernate.cache.infinispan.<warname>.<unitname>.<FQN of entity>...

在您的情况下,我不知道您的部署名称,但您提到的单位和 FQN 类似:

hibernate.cache.infinispan.<warname>.myProject_dal_PU.com.myenterprise.myproject.dal.ejb.entity.RefStatus.expiration.lifespan

关于java - Infinispan - 根据实体 expiration.lifespan 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24058913/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com