Джерси 2 / JAX-RS Пользовательский протокол / порт - PullRequest
1 голос
/ 13 марта 2020

Мы смотрим на обновление с 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();
...