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();
}