如何使用Jersey Client为每个POST请求建立新连接

时间:2012-08-23 13:40:59

标签: java ssl https jersey

我的程序应该向https站点发出多个POST请求,每次执行新请求时我都需要它进行SSL握手。 但是,它似乎只是第一次进行握手,然后使用现有连接执行其他请求而无需新的握手。我确信它以后不会进行握手,因为第一次执行请求并接收响应大约需要700毫秒,但后来只需要大约30毫秒。

以下是我如何初始化客户端:(我在这里错过了一些属性吗?)

    SSLContext context = SSLContext.getInstance("SSL");
    context.init(kms, trustAllCerts, null);
    SSLContext.setDefault(context);

    ClientConfig config = new DefaultClientConfig();
    config.getProperties().put(ClientConfig.PROPERTY_READ_TIMEOUT, timeout * 1000);
    config.getProperties().put(ClientConfig.PROPERTY_FOLLOW_REDIRECTS, false);
    config.getFeatures().put(ClientConfig.FEATURE_DISABLE_XML_SECURITY, true);
    client = Client.create(config);

以下是我提出实际要求的方式:

    ClientResponse cr = service.type(MediaType.APPLICATION_XML).accept(MediaType.APPLICATION_XML).post(ClientResponse.class, batch);

(服务变量是Builder类,它创建ClientRequest。它是指定URL的位置。)

请问任何想法?

1 个答案:

答案 0 :(得分:0)

HTTP具有持久连接,并且SSL具有可恢复的会话,这两者都专门用于阻止您尝试完成的任务。

您可能把他们都关在某种程度上为你的测试目的,如果你深入到你的服务器的内部结构,但我真的没有看到测试你会疯部署在生产环境配置的点。