Caching 如何在JAX-RS中实现缓存

Caching 如何在JAX-RS中实现缓存,caching,jax-rs,Caching,Jax Rs,我使用RESTfulWebService从数据库检索数据并返回JSON响应。 我想缓存这个webservice调用,这意味着在应用程序启动时,webservice将从数据库获取结果并将其存储在缓存中 在随后的请求中,它应该从缓存而不是数据库中读取值。 此外,当添加条目或修改现有数据时,应该刷新缓存 我查找了HTTP缓存代码,代码编写如下:- public class Login_New { @GET @Path("/dofetch") @Produces("applica

我使用RESTfulWebService从数据库检索数据并返回JSON响应。 我想缓存这个webservice调用,这意味着在应用程序启动时,webservice将从数据库获取结果并将其存储在缓存中

在随后的请求中,它应该从缓存而不是数据库中读取值。 此外,当添加条目或修改现有数据时,应该刷新缓存

我查找了HTTP缓存代码,代码编写如下:-

public class Login_New {
    @GET
    @Path("/dofetch")
    @Produces("application/json")
    public Response getUser() {
        String user = null;
        System.out.println("Inside Login_New");

        ArrayList<User> users = null;

        users = DBConnection.getUser();
        Gson gson = new Gson();
        System.out.println(gson.toJson(users));
        user = gson.toJson(users);

        CacheControl cc = new CacheControl();
        cc.setMaxAge(86400);
        cc.setPrivate(true);

        ResponseBuilder builder = Response.ok(user);
        // return user;
        return builder.build();
    }
}
公共类登录\u新建{
@得到
@路径(“/dofetch”)
@生成(“应用程序/json”)
公共响应getUser(){
字符串user=null;
System.out.println(“内部登录新”);
ArrayList用户=null;
users=DBConnection.getUser();
Gson Gson=新的Gson();
System.out.println(gson.toJson(users));
user=gson.toJson(用户);
CacheControl cc=新的CacheControl();
抄送setMaxAge(86400);
cc.setPrivate(真);
ResponseBuilder=Response.ok(用户);
//返回用户;
返回builder.build();
}
}
当我点击后续请求时,我可以从日志中看到请求正在点击数据库,这意味着缓存不工作


请建议您通过检查数据库是否命中来测试缓存,这有点说您忽略了缓存控制的工作原理。服务器不缓存任何内容。浏览器(或支持cc的用户代理)执行缓存。如果您使用的是浏览器,则不应发出请求,因为浏览器具有缓存对象。如果您使用的是不支持HTTP缓存的其他客户端,这就是服务器被命中的原因。那么我如何测试它呢..或者确保缓存在浏览器端完成,而无需再次提交请求?