From 3e4d3052919c817d45ca6c6e33528266251a7db8 Mon Sep 17 00:00:00 2001 From: Rossen Stoyanchev Date: Tue, 14 Aug 2018 17:34:17 +0300 Subject: [PATCH] Polish ReactorResourceFactory --- .../reactive/ReactorResourceFactory.java | 22 +++++++++++++++---- src/docs/asciidoc/web/webflux-webclient.adoc | 2 +- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/spring-web/src/main/java/org/springframework/http/client/reactive/ReactorResourceFactory.java b/spring-web/src/main/java/org/springframework/http/client/reactive/ReactorResourceFactory.java index 6cafa276ce..17e2604060 100644 --- a/spring-web/src/main/java/org/springframework/http/client/reactive/ReactorResourceFactory.java +++ b/spring-web/src/main/java/org/springframework/http/client/reactive/ReactorResourceFactory.java @@ -143,11 +143,25 @@ public class ReactorResourceFactory implements InitializingBean, DisposableBean @Override public void destroy() { - Assert.notNull(this.connectionProvider, "No ConnectionProvider"); - this.connectionProvider.dispose(); + try { + ConnectionProvider provider = this.connectionProvider; + if (provider != null) { + provider.dispose(); + } + } + catch (Throwable ex) { + // ignore + } - Assert.notNull(this.loopResources, "No LoopResources"); - this.loopResources.dispose(); + try { + LoopResources resources = this.loopResources; + if (resources != null) { + resources.dispose(); + } + } + catch (Throwable ex) { + // ignore + } } } diff --git a/src/docs/asciidoc/web/webflux-webclient.adoc b/src/docs/asciidoc/web/webflux-webclient.adoc index ff3557ce94..0505da8657 100644 --- a/src/docs/asciidoc/web/webflux-webclient.adoc +++ b/src/docs/asciidoc/web/webflux-webclient.adoc @@ -95,7 +95,7 @@ concurrency. In this mode global resources remain active until the process exits If the server is timed with the process, there is typically no need for an explicit shutdown. However if the server can start or stop in-process, e.g. Spring MVC application deployed as a WAR, you can declare a Spring-managed bean of type -`ReactorResourceFactory` with `globaResources=true` (the default) to ensure the Reactor +`ReactorResourceFactory` with `globalResources=true` (the default) to ensure the Reactor Netty global resources are shut down when the Spring `ApplicationContext` is closed: [source,java,intent=0]