我的 jersey rest api 和一个客户端遇到了一些问题。
这就是我在服务器端使用这些方法的方式:
@POST
@Path("/seed")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Response addSeed(Seed seed) throws InterruptedException {
if (!Validator.isValidSeed(seed)) {
return Response.status(400).entity("{\"message\":\"Please verify your JSON!\", \"stat\":\"failed\"}")
.build();
}
save(seed);
return Response.status(200).build();
}
如果我在 while(true) 循环中运行 Jersey 客户端,则会打开连接并且不会关闭。所以我遇到了一个问题,我打开了很多连接并且我的网络崩溃了。所以我不能再使用我的服务器了。连接关闭后,我可以连接到服务器。
这是一个客户:
ClientConfig config = new DefaultClientConfig();
Client client = Client.create(config);
WebResource service = client.resource(getBaseURI()).path("api/seed");
while (true) {
ClientResponse cr = service.header("Content-Type", "application/json").post(ClientResponse.class, seed);
System.out.println(cr);
cr.close();
我的问题是:
我可以在服务器端做什么,以防止客户端打开新连接?
如何指定最大连接数?
我应该如何实现泽西客户端以重用开放连接?