eclipse-ee4j / eclipse-ee4j/jersey
Apache Connector: add a config property to choose an HttpClientBuilder
- 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
Assessment
This issue has not been assessed yet.