如何配置Jersey(javax.ws.rs。*)以重用ssl会话

时间:2015-03-15 21:05:59

标签: java ssl jax-rs jersey-2.0 keep-alive

我编写了一个测试客户端,使用Jersey库通过TLS发送请求。我正在努力弄清楚如何配置/编码Jersey客户端,以便它重用SSL会话以便我可以更快地进行测试。 Jersey客户端默认使用HTTP keepAlive;这意味着它保持TCP连接打开并重用它们,但它似乎对SSL会话不一样。

如果有人对此有任何经验,请告诉我。

以下是我正在设置Jersey客户端的代码段以及我发送请求的代码:

        SSLContext sslContext = sslConfig.createSSLContext().getInstance(tlsVersion);
        sslContext.init(keyManagerFactory.getKeyManagers(), trustAllCerts, new SecureRandom());
        SSLEngine sslEngine = sslContext.createSSLEngine("qa.p.uvvu.com", 7001);

        Client client =  ClientBuilder.newBuilder().sslContext(sslContext)
                .hostnameVerifier(new HostnameVerifier() {
                    @Override
                    public boolean verify(String hostname, SSLSession session) {
                        return true;
                    }
                }).build();


    response = client.target(uri).request()
            .headers(multivaluedMap).post(Entity.entity(object, MediaType.APPLICATION_XML_TYPE));

1 个答案:

答案 0 :(得分:-1)

我使用Apache连接器:

HttpClientConnectionManager connManager = PoolingHttpClientConnectionManager();

ClientConfig clientConfig = new ClientConfig();
clientConfig.connectorProvider(new ApacheConnectorProvider());
clientConfig.property(ApacheClientProperties.CONNECTION_MANAGER, connManager);

Client client = ClientBuilder.newClient(clientConfig);

您可以根据需要在池中保留的连接数以及要将其保留在池中的时长来配置HttpClientConnectionManager以满足您的需求。

免责声明:我没有代码,因此上述代码可能无法100%运行。