eclipse-ee4j / eclipse-ee4j/jersey

Apache Connector: add a config property to choose an HttpClientBuilder

Open
#5,808 4 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
Java
Stars
730
Forks
382
PR merge metrics
No merged PRs in 30d

Description

Currently both the 4.x & 5.x Apache Connector Providers hard code the creation of the `HttpClientBuilder`.

[4.x connector (3.1 branch):](https://github.com/eclipse-ee4j/jersey/blob/3.1/connectors/apache-connector/src/main/java/org/glassfish/jersey/apache/connector/ApacheConnector.java#L270)
```java
class ApacheConnector implements Connector {
ApacheConnector(final Client client, final Configuration config) {
final HttpClientBuilder clientBuilder = HttpClientBuilder.create();
this.client = configuredBuilder.build();
}
}
```

[5.x connnector (4.0 branch):](https://github.com/eclipse-ee4j/jersey/blob/4.0/connectors/apache5-connector/src/main/java/org/glassfish/jersey/apache5/connector/Apache5Connector.java#L268)
```java
class Apache5Connector implements Connector {
Apache5Connector(final Client client, final Configuration config) {
final HttpClientBuilder clientBuilder = HttpClientBuilder.create();
this.client = configuredBuilder.build();
}
}
```

It would be convenient to be able to choose a different implementation of `HttpClientBuilder`. For instance, [opentelemetry-apache-httpclient](https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v4_3/TracingHttpClientBuilder.java) extends `HttpClientBuilder` in order to override a protected method.

I propose a new property `Apache5?ClientProperties.CLIENT_BUILDER`. `ApacheConnector` would extract the object at that property, use it if it is an instance of `HttpClientBuilder`, and fall back to `HttpClientBuilder.create()` if it is absent / not an instance of `HttpClientBuilder`.

Happy to contribute a PR if it would be accepted in principle.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.