2014-06-05 3 views
3

Jboss 6.1.0에 배포 된 java 웹 응용 프로그램에 infinispan 5.2.6.Final을 사용합니다. 나는 나의 엔티티 빈 com.myenterprise.myproject.dal.ejb.entity.RefStatus이 설명서Infinispan - 엔티티 만료 당 설정 .lifespan

http://infinispan.org/docs/5.2.x/user_guide/user_guide.html#_advanced_configuration_2

다음 엔티티 특정 expiration.lifespan 당을 설정하기 위해 노력하고있어.

가이드는 다음 상태 : 또한 같은 방식으로 개체/모음 당에 형 기초를 퇴거/만료 설정을 재정의 할 수 있습니다

만 해당 엔티티 (예 : COM afftect 오버라이드 (override) 설정. acme.Person) 또는 콜렉션 유형 (예 : com.acme.Person.addresses). 예를 들어 : 그래서

<property name="hibernate.cache.infinispan.com.acme.Person.expiration.lifespan" value= "65000"/> 

, 난 테스트 용 10 밀리 초에 수명을 줄이기 위해, 내 persistence.xml을에 다음 요소를 추가 한, 그것은 나중에 미세 조정을 위해 :

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

설정이 작동하지만, 모든 개체 캐시에 영향을, 그리고 내가 원하는 것이 아니다.

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

감사합니다 다음은 무엇

내 application.xml을 파일입니다.

답변

4

엔티티 이름을 제외하고 응용 프로그램 서버 내에서 실행중인 경우 배포 이름과 단위도 입력해야합니다. 따라서, 이러한 모든 만료 특성 앞에는해야합니다

hibernate.cache.infinispan.<warname>.myProject_dal_PU.com.myenterprise.myproject.dal.ejb.entity.RefStatus.expiration.lifespan : hibernate.cache.infinispan.<warname>.<unitname>.<FQN of entity>... 귀하의 경우

, 당신의 배치의 이름을 모르는,하지만 당신이 언급 단위 및 FQN, 뭔가 등으로

+0

올바른 것입니다. –

+0

좋은 게시/explainantion –

+0

@ GalderZamarreño 그것은 당신의 대답과 함께 작동하지 않았어, 내가 한 설정 변경을 찾으십시오. 내 경우 person 엔티티는 demo.war -> my-entity.jar -> com.demo.model.Person.class ... 내 persistence.xml statistics -> entries를 사용하고 있습니다. 얼마 동안 유휴로 인해서." 저장소에있는 엔티티가 축출 될 때까지는 수명은 길어 지지만 시간 제한없이 (기본적으로 만료되지 않음) 캐시에 남아 있기를 원합니다. – prem

1

올바른 구성을 찾는 데 많은 시간이 걸렸습니다. 분명히 그것은 다음과 같습니다 :

최대 절전 모드 속성은 다음 형식이어야합니다 :

hibernate.cache.infinispan.<prefix>.<full-class-name>.<property-name> 여기서

<prefix> - 당신이 JNDI 이름의 종류에 표시되는 이름에 기본적으로. Wildfly의 경우 ear-name.ear/ejb-jar-name.jar#persistence-unit-name 이지만 hibernate.cache.region_prefix 속성으로 제어 할 수 있습니다. region_prefix를 ""로 설정하고 접두어를 무시하십시오.

<property-name> - 문자열은 org.hibernate.cache.infinispan.InfinispanRegionFactory 클래스 및 공식 Infinisan 설명서에 나와 있습니다.당신이 hibernate.cache.region_prefix로를 설정 한 경우에만 Infinispan documentation 공식 한마디로

, 나는이 누락 된 정보를 추가 할 문서를 업데이트하고 있어요 ","Btw는