diff --git a/core-client/src/main/java/org/glassfish/jersey/client/JerseyInvocation.java b/core-client/src/main/java/org/glassfish/jersey/client/JerseyInvocation.java index d5c06a34be..d27c619575 100644 --- a/core-client/src/main/java/org/glassfish/jersey/client/JerseyInvocation.java +++ b/core-client/src/main/java/org/glassfish/jersey/client/JerseyInvocation.java @@ -451,18 +451,12 @@ public Builder property(final String name, final Object value) { @Override public CompletionStageRxInvoker rx() { - ExecutorServiceProvider instance = this.requestContext.getInjectionManager() - .getInstance(ExecutorServiceProvider.class); - - return new JerseyCompletionStageRxInvoker(this, instance.getExecutorService()); + return new JerseyCompletionStageRxInvoker(this, executorService()); } @Override public T rx(Class clazz) { - ExecutorServiceProvider instance = this.requestContext.getInjectionManager() - .getInstance(ExecutorServiceProvider.class); - - return createRxInvoker(clazz, instance.getExecutorService()); + return createRxInvoker(clazz, executorService()); } private T rx(Class clazz, ExecutorService executorService) { @@ -473,6 +467,19 @@ private T rx(Class clazz, ExecutorService executorServi return createRxInvoker(clazz, executorService); } + // get executor service from explicit configuration; if not available, get executor service from provider + private ExecutorService executorService() { + final ExecutorService result = request().getClientConfig().getExecutorService(); + + if (result != null) { + return result; + } + + return this.requestContext.getInjectionManager() + .getInstance(ExecutorServiceProvider.class) + .getExecutorService(); + } + /** * Create {@link RxInvoker} from provided {@code RxInvoker} subclass. *