Мы смотрим на обновление с Jersey 1 / HttpClient 3.1 до Jersey 2 / HttpClient 4.5.12.
Мы выполняем вызовы REST для стороннего программного продукта, использующего уникальный протокол и порт (HTTPS через se c -http на порт 8112 ) вместо стандарт https / 443 . Так, например, URL-адресом будет HTTPS traffi c over sec-http://myserver:8112/person/1
Кто-нибудь знает, как настроить Jersey 2 / HttpClient 4.x для использования собственного протокола и пользовательского порта?
До того, как у нас был следующий код для Jersey 1 / HttpClient 3.1:
final Protocol protocol = new Protocol("sec-http",
(ProtocolSocketFactory) new SocketFactory(this.sslContext), 8112);
Protocol.registerProtocol(protocolScheme, protocol);
Насколько я понимаю, я не могу заставить это работать в Jersey 2 / HttpClient 4.5.12 , Класс Protocol
исчез.
Вот что я пробовал:
LayeredConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(this.sslContext);
Registry<ConnectionSocketFactory> r = RegistryBuilder.<ConnectionSocketFactory>create()
.register("sec-http", sslsf) // how do I specify a custom port?!
.build();
PoolingHttpClientConnectionManager httpClientConnectionManager = new PoolingHttpClientConnectionManager(r);
ClientConfig clientConfig = new ClientConfig();
clientConfig.connectorProvider(new ApacheConnectorProvider());
clientConfig.property(ApacheClientProperties.CONNECTION_MANAGER, httpClientConnectionManager);
clientConfig.property(ApacheClientProperties.DISABLE_COOKIES, Boolean.FALSE);
clientConfig.register(new JacksonFeature());
Client client = ClientBuilder.newBuilder()
.withConfig(clientConfig)
.build();