如何使用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的地方。)
有什么想法吗?
答
HTTP具有持续连接,并且SSL具有可恢复的会话,这两者都专门用于防止您试图完成的任务。
如果您深入了解服务器的内部功能,您可能会将它们都以某种方式关闭以用于测试目的,但我真的没有看到测试您将在生产环境中部署的配置的问题。
+0
感谢您的澄清。看起来我可能不得不使用Jersey以外的东西,因为我无法找到在Jersey框架中关闭的正确设置。 – user1619880
“我需要它在每次执行新请求时都进行SSL握手。”为什么? –
用于测试服务器如何处理请求。 – user1619880