hecache总是返回相同的结果

时间:2015-12-09 23:13:40

标签: spring spring-mvc caching ehcache cache-control

我正在开发一个Web服务系统。我使用的是Spring框架和hecache。 问题是,当我第一次向URL请求时,我得到了正确的结果,但是当我用另一个参数做第二个请求时,它仍然返回与第一个请求相同的结果。当缓存过期时,它会在第一次返回正确的结果。

这是我的Spring Service方法

@Cacheable(value="getUserInformation", key="#progid")
public Object getUserInformation(String login, String progid, HttpServletRequest request){
    System.out.println( login.concat(progid) );
    try {
        SimpleJdbcCall simpleJdbcCall   = new   SimpleJdbcCall(jdbcTemplate).
                                                withCatalogName("siv_pck_general_functions").
                                                withFunctionName("fn_get_user_information");
        SqlParameterSource out          = new MapSqlParameterSource().addValue("p_loginname", login).addValue("p_programid", progid);
        map.put("Result", simpleJdbcCall.executeFunction(List.class, out) );
        logger.info( LogUtils.getTypeMessage(request.getRemoteAddr(), request.getRequestURI(), LogUtils.INFO ));
    } catch (Exception e) {
        map.put("Result","Error");
    }
    return map;
}

这是我的ecache配置

<cache name="getUserInformation" 
    maxEntriesLocalHeap="10000"
    maxEntriesLocalDisk="1000" 
    eternal="false" 
    diskSpoolBufferSizeMB="20"
    timeToIdleSeconds="300" 
    timeToLiveSeconds="600"
    memoryStoreEvictionPolicy="LFU" 
    transactionalMode="off">
    <persistence strategy="localTempSwap" />
</cache>

这是我的Web服务映射

@RequestMapping( value="/getUserInformation/{loginName}/{programId}/{token}", method = RequestMethod.GET,  produces="application/json;charset=UTF-8" )
public Object getUserInformation( @PathVariable String loginName, @PathVariable String programId, @PathVariable String token,HttpServletRequest request){
    httpServletRequest = request;
    String result = validateToken(token);
    if ( "OK".equals(result) ){     
        map.put("Result", service.getUserInformation(loginName, programId, request) );
    }else{
        map.put("Result",result);
    }
    return map;
}

0 个答案:

没有答案