4

When using Jetty Http client v9.4.34.v20201102 with jetty-reactive-httpclient 1.1.4 and spring-webflux 5.2.2, sslContextFactory is passed to the HttpClient constructor:

import org.eclipse.jetty.util.ssl.SslContextFactory.Client;
import org.eclipse.jetty.client.HttpClient;
import org.springframework.web.reactive.function.client.WebClient;

    SslContextFactory.Client sslContextFactory = new SslContextFactory.Client();
    HttpClient httpClient = new HttpClient(sslContextFactory);
...
    WebClient.builder().clientConnector(buildClientConnector(httpClient)).build();

when trying to access https endpoint following NPE takes place:

Caused by: java.lang.NullPointerException: Missing SslContextFactory
    at java.base/java.util.Objects.requireNonNull(Objects.java:246)
    at org.eclipse.jetty.io.ssl.SslClientConnectionFactory.<init>(SslClientConnectionFactory.java:54)
    at org.eclipse.jetty.client.HttpClient.newSslClientConnectionFactory(HttpClient.java:1202)
    at org.eclipse.jetty.client.HttpClient.newSslClientConnectionFactory(HttpClient.java:1208)
    at org.eclipse.jetty.client.HttpDestination.newSslClientConnectionFactory(HttpDestination.java:149)
    at org.eclipse.jetty.client.HttpDestination.newSslClientConnectionFactory(HttpDestination.java:155)
    at org.eclipse.jetty.client.HttpDestination.<init>(HttpDestination.java:95)
Fedor
  • 559
  • 1
  • 7
  • 19
  • Not sure what `buildClientConnector()` is but the same code works for me when I use `WebClient webClient = WebClient.builder().clientConnector(new JettyClientHttpConnector(httpClient)).build();` – Ahmad Abdelghany Oct 07 '22 at 15:30

1 Answers1

0

I was experiencing the same error, then instead of jetty-reactive-httpclient, I have used reactor-netty resolved that issue for me. Gradle code -

//  implementation group: 'org.eclipse.jetty', name: 'jetty-reactive-httpclient'
    implementation group: 'io.projectreactor.netty', name: 'reactor-netty'
Musa
  • 3,944
  • 4
  • 21
  • 27