我在应用程序中使用Spring ObjectGridClientBean访问eXtreme Scale分布式对象网格。
服务器启动后-它可以从高速缓存中正常读取/写入;但是过了一段时间(我相信大约是1个小时),它就变得无响应-意味着无法从缓存中读取/写入任何内容。
//Setup
@Bean
public ObjectGridClientBean wxsGridClient() {
ObjectGridClientBean oGCB = new ObjectGridClientBean();
oGCB.setObjectGridName("myGrid");
oGCB.setCatalogServiceDomain(wxsCSDomain);
return oGCB;
}
@Bean
public ObjectGridCatalogServiceDomainBean wxsCSDomain() {
ObjectGridCatalogServiceDomainBean oGCSDB = new ObjectGridCatalogServiceDomainBean();
oGCSDB.setCatalogServiceEndpoints(
catalogServer.getCatalogendpoint() + ApplicationConstants.COLON + catalogServer.getCatalogport());
return oGCSDB;
}
private List<Cache> createCaches() {
List<Cache> cacheList = new ArrayList<Cache>();
cacheObjects.forEach((cacheName, cacheMap) -> {
ObjectGridCache oGC = new ObjectGridCache();
oGC.setName(cacheName);
oGC.setMapName(cacheMap);
oGC.setObjectGridClient(wxsGridClient);
cacheList.add(oGC);
});
return cacheList;
}
@Bean
public CacheManager cacheManager() {
SimpleCacheManager simpleCacheManager = new SimpleCacheManager();
simpleCacheManager.setCaches(createCaches());
return simpleCacheManager;
}
这是使用场景
//Usage scenario
public APIToken retrieveValidToken() throws Exception {
APIToken APIToken = null;
if (null != cacheManager.getCache("APITokenCache").get(API_TOKEN)) {
APIToken = cacheManager.getCache("APITokenCache").get(API_TOKEN, APIToken.class);
}
if (isAPITokenValid(APIToken)) {
return APIToken;
}
return null;
}
第一次调用cacheManager.getCache(“ APITokenCache”)。get(API_TOKEN)返回null(1小时后)。我究竟做错了什么?是否发生超时导致这种无响应?我需要从Client Bean访问并控制其超时的对象网格会话(或会话配置)吗?