如何使用Jersey客户端为每个POST请求建立新的连接

问题描述:

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

下面是如何初始化客户端:(我在这里缺少一些财产?)

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); 

(服务变量是生成器类,创建ClientRequest。它是指定URL的地方。)

有什么想法吗?

+1

“我需要它在每次执行新请求时都进行SSL握手。”为什么? –

+0

用于测试服务器如何处理请求。 – user1619880

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

如果您深入了解服务器的内部功能,您可能会将它们都以某种方式关闭以用于测试目的,但我真的没有看到测试您将在生产环境中部署的配置的问题。

+0

感谢您的澄清。看起来我可能不得不使用Jersey以外的东西,因为我无法找到在Jersey框架中关闭的正确设置。 – user1619880