Пользовательский преобразователь имени хоста для клиента JAX-RS - PullRequest
0 голосов
/ 10 апреля 2019

Есть ли способ настроить разрешение имени хоста внутри клиента JAX-RS?

Я использую javax.ws.rs.client.ClientBuilder для создания клиента, и я хотел бы, чтобы, например, https://mytestinghost.tech разрешает mytestinghost.tech в IP, который я могу определить; например 1.2.3.4.

Я использую соединитель по умолчанию или Jetty HTTP (2) соединитель .

Клиент извлекается с использованием следующего кода.

ClientBuilder.newBuilder()
  .trustStore(clientCertificateProvider.getCertificate())
  .withConfig(new ClientConfig().connectorProvider(JettyHttp2Connector::new))

1 Ответ

0 голосов
/ 10 апреля 2019

Мне удается форсировать разрешение путем настройки базового SocketAddressResolver внутри HttpClient.

ClientBuilder.newBuilder()
  .register(new JacksonJsonProvider())
  .trustStore(HttpUtility.trustStore())
  .withConfig(new ClientConfig().connectorProvider((jaxrsClient, config1) -> {
      final JettyHttp2Connector jettyHttp2Connector = new JettyHttp2Connector(jaxrsClient, config1);
      jettyHttp2Connector.getHttpClient().setSocketAddressResolver((s, i, promise) -> {
          try {
              final List<InetSocketAddress> result = Collections.singletonList(new InetSocketAddress(InetAddress.getByName("1.2.3.4"), managementPort));
              promise.succeeded(result);
          } catch (UnknownHostException e) {
              throw new IllegalStateException(e);
          }

      });
      return jettyHttp2Connector;
  }))
...