Caching 如何查找过时的Infinispan/Jboss缓存对象?

Caching 如何查找过时的Infinispan/Jboss缓存对象?,caching,jboss,jboss5.x,infinispan,Caching,Jboss,Jboss5.x,Infinispan,主题是问题 场景:即使存在注销链接,一些用户也无法正确注销。他们立即使用一个新标签并再次登录。这一次,将创建一个新的缓存对象,而旧的缓存对象不会被销毁 首先,您可以寿命或maxIdle使所有实体超时,这样它们就不会长时间处于过时状态 然而,要回答你的问题。。。您可以使用infinispan查询模块: <dependency> <groupId>org.infinispan</groupId> <artifactI

主题是问题

场景:即使存在注销链接,一些用户也无法正确注销。他们立即使用一个新标签并再次登录。这一次,将创建一个新的缓存对象,而旧的缓存对象不会被销毁

首先,您可以
寿命
maxIdle
使所有实体超时,这样它们就不会长时间处于过时状态

然而,要回答你的问题。。。您可以使用
infinispan查询
模块:

     <dependency>
        <groupId>org.infinispan</groupId>
        <artifactId>infinispan-query</artifactId>
        <version>5.2.1.Final</version>
     </dependency>
import org.apache.lucene.search.Query;
import org.hibernate.search.query.dsl.QueryBuilder;
import org.infinispan.Cache;
import org.infinispan.query.CacheQuery;
import org.infinispan.query.Search;
import org.infinispan.query.SearchManager;

[...]

public List<YourEntity> searchEntities( String fieldValue ) {
  SearchManager searchManager = Search.getSearchManager( cache );
  QueryBuilder queryBuilder = searchManager.buildQueryBuilderForClass( YourEntity.class ).get();
  // this chain will change depending on what you are querying
  Query luceneQuery = queryBuilder.keyword().onField( "fieldName" ).matching( fieldValue ).createQuery();
  // use either searchManager.getClusteredQuery with local index, or a searchManager.getQuery with clustered index
  CacheQuery cacheQuery = searchManager.getQuery( luceneQuery, YourEntity.class );
  //noinspection unchecked
  return (List)cacheQuery.list();
}