免责声明:这只是我正在运行的测试,而不是试图获得可靠的请求服务。
由于Jersey建立在servlet之上,我假设servlet在所有请求之间共享。所以我写了一个非常基础的课程:
@Path("/id")
public class TestIdGeneration {
private AtomicInteger counter = new AtomicInteger();
@GET
@Produces("text/plain")
public Response serveRequest() {
Response.ResponseBuilder response = Response.ok(String.valueOf(counter.incrementAndGet()));
return response.build();
}
}
我假设每次GET请求都会将计数器更新一次。但是evertime我发出get请求我得到了值1.我检查了响应标头以确保请求没有被缓存。以下是完整的响应标题:
Status Code: 200 OK
Connection: close
Content-Type: text/plain
Date: Thu, 16 Jan 2014 00:12:43 GMT
Server: Apache
Transfer-Encoding: chunked
为什么计数器不会随每个GET请求更新?
答案 0 :(得分:2)
默认情况下,根资源类的生命周期是每个请求, 即每个都创建一个新的根资源类实例 请求URI路径与根资源匹配的时间。
因此,由于为每个请求创建了一个新实例,因此预计会报告该行为。请尝试将您的计数器声明为static
。