diff --git a/spring-web/src/main/java/org/springframework/http/client/reactive/JettyResourceFactory.java b/spring-web/src/main/java/org/springframework/http/client/reactive/JettyResourceFactory.java index 1afbb1ba3aba49db7e2b8f9db3edf685cdcd3b46..5af0b28f2f9a6d2a90edd0284c110aea52e9a0ea 100644 --- a/spring-web/src/main/java/org/springframework/http/client/reactive/JettyResourceFactory.java +++ b/spring-web/src/main/java/org/springframework/http/client/reactive/JettyResourceFactory.java @@ -23,7 +23,7 @@ import java.util.concurrent.Executor; import org.eclipse.jetty.io.ByteBufferPool; import org.eclipse.jetty.io.MappedByteBufferPool; import org.eclipse.jetty.util.ProcessorUtils; -import org.eclipse.jetty.util.component.ContainerLifeCycle; +import org.eclipse.jetty.util.component.LifeCycle; import org.eclipse.jetty.util.thread.QueuedThreadPool; import org.eclipse.jetty.util.thread.ScheduledExecutorScheduler; import org.eclipse.jetty.util.thread.Scheduler; @@ -127,7 +127,6 @@ public class JettyResourceFactory implements InitializingBean, DisposableBean { if (this.executor == null) { QueuedThreadPool threadPool = new QueuedThreadPool(); threadPool.setName(name); - threadPool.start(); this.executor = threadPool; } if (this.byteBufferPool == null) { @@ -137,19 +136,32 @@ public class JettyResourceFactory implements InitializingBean, DisposableBean { : ProcessorUtils.availableProcessors() * 2); } if (this.scheduler == null) { - Scheduler scheduler = new ScheduledExecutorScheduler(name + "-scheduler", false); - scheduler.start(); - this.scheduler = scheduler; + this.scheduler = new ScheduledExecutorScheduler(name + "-scheduler", false); } + + if (this.executor instanceof LifeCycle) { + ((LifeCycle)this.executor).start(); + } + this.scheduler.start(); } @Override public void destroy() throws Exception { - if (this.executor instanceof ContainerLifeCycle) { - ((ContainerLifeCycle)this.executor).stop(); + try { + if (this.executor instanceof LifeCycle) { + ((LifeCycle)this.executor).stop(); + } + } + catch (Throwable ex) { + // ignore + } + try { + if (this.scheduler != null) { + this.scheduler.stop(); + } } - if (this.scheduler != null) { - this.scheduler.stop(); + catch (Throwable ex) { + // ignore } }