Connection Jersey客户端打开的连接太多

Connection Jersey客户端打开的连接太多,connection,client,jersey,jax-rs,Connection,Client,Jersey,Jax Rs,我的jersey rest api和客户端出现了一些问题 以下是im在服务器端使用方法的方式: @POST @Path("/seed") @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public Response addSeed(Seed seed) throws InterruptedException { if (!Validator.isValidSeed(seed)) {

我的jersey rest api和客户端出现了一些问题

以下是im在服务器端使用方法的方式:

@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();
我的问题是:

在服务器端,我可以做些什么来防止客户端打开新连接

如何指定最大连接数


我应该如何实现jersey客户端以重用开放连接?

我不知道如何在web应用程序级别限制jersey资源。如果您升级到GlassFish EE,您可以将资源设置为EJBs@Stateless@Stateless部署(maxInstances=16)

连接的堆积可能是由于“保持活动”设置造成的。在Tomcat 6中,有两种可用于调整连接器:

  • MaxKeepAliverRequests,默认为100。这是在服务器关闭连接之前可以通过管道传输的最大HTTP请求数。将此属性设置为1将禁用HTTP/1.0保持活动,以及HTTP/1.1保持活动和管道。将此设置为-1将允许无限量的流水线或保持活动的HTTP请求
  • keepAliveTimeout,默认值为connectionTimeout,默认值为60k毫秒。请确定此连接器在关闭连接之前等待另一个HTTP请求的毫秒数

  • 我使用tomcat 6,我可以在server.xml中指定maxThreads的数量。但是我不想更改server.xml,有没有办法在ressource或客户端中进行更改?我们公司正在使用Tomcat 6,因此我无法更改服务器。正如我前面提到的,我无法查看Tomcat配置,因为在同一台服务器上运行着其他一些应用程序。