Adapt ReactorHttpsServer to lates Reactor Netty changes

This commit is contained in:
Violeta Georgieva 2018-07-05 20:17:05 +03:00 committed by Rossen Stoyanchev
parent d2eb4d2671
commit 22f6e5b9ff
1 changed files with 19 additions and 2 deletions

View File

@ -16,12 +16,18 @@
package org.springframework.http.server.reactive.bootstrap; package org.springframework.http.server.reactive.bootstrap;
import java.security.cert.CertificateException;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
import reactor.core.Exceptions;
import reactor.netty.DisposableServer; import reactor.netty.DisposableServer;
import reactor.netty.tcp.SslProvider.DefaultConfigurationType;
import org.springframework.http.server.reactive.ReactorHttpHandlerAdapter; import org.springframework.http.server.reactive.ReactorHttpHandlerAdapter;
import io.netty.handler.ssl.SslContextBuilder;
import io.netty.handler.ssl.util.SelfSignedCertificate;
/** /**
* @author Stephane Maldini * @author Stephane Maldini
*/ */
@ -37,9 +43,20 @@ public class ReactorHttpsServer extends AbstractHttpServer {
@Override @Override
protected void initServer() { protected void initServer() {
this.reactorHandler = createHttpHandlerAdapter(); this.reactorHandler = createHttpHandlerAdapter();
SelfSignedCertificate cert = null;
try {
cert = new SelfSignedCertificate();
}
catch (CertificateException e) {
throw Exceptions.propagate(e);
}
SslContextBuilder sslContextBuilder =
SslContextBuilder.forServer(cert.certificate(), cert.privateKey());
this.reactorServer = reactor.netty.http.server.HttpServer.create() this.reactorServer = reactor.netty.http.server.HttpServer.create()
.tcpConfiguration(server -> server.host(getHost()).secure()) .host(getHost())
.port(getPort()); .port(getPort())
.secure(sslContextSpec -> sslContextSpec.sslContext(sslContextBuilder)
.defaultConfiguration(DefaultConfigurationType.TCP));
} }
private ReactorHttpHandlerAdapter createHttpHandlerAdapter() { private ReactorHttpHandlerAdapter createHttpHandlerAdapter() {