From 3dcd85e902f0401163f00247872f5f911f82a2a9 Mon Sep 17 00:00:00 2001 From: Redkale <22250530@qq.com> Date: Wed, 31 Jan 2018 10:45:45 +0800 Subject: [PATCH] =?UTF-8?q?Context=E5=A2=9E=E5=8A=A0SSLContext=E5=B1=9E?= =?UTF-8?q?=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/org/redkale/net/Context.java | 15 +++++++++++++-- src/org/redkale/net/Server.java | 4 ++++ src/org/redkale/net/http/HttpContext.java | 12 +++++++----- src/org/redkale/net/http/HttpServer.java | 2 +- src/org/redkale/net/sncp/SncpContext.java | 12 +++++++----- src/org/redkale/net/sncp/SncpServer.java | 2 +- 6 files changed, 33 insertions(+), 14 deletions(-) diff --git a/src/org/redkale/net/Context.java b/src/org/redkale/net/Context.java index 3b06b1c59..c6f76661a 100644 --- a/src/org/redkale/net/Context.java +++ b/src/org/redkale/net/Context.java @@ -13,6 +13,7 @@ import java.nio.charset.*; import java.util.concurrent.*; import java.util.function.*; import java.util.logging.*; +import javax.net.ssl.SSLContext; import org.redkale.convert.bson.*; import org.redkale.convert.json.*; import org.redkale.util.*; @@ -35,6 +36,9 @@ public class Context { //Server的线程池 protected final ThreadPoolExecutor executor; + //SSL + protected final SSLContext sslContext; + //ByteBuffer的容量,默认8K protected final int bufferCapacity; @@ -74,11 +78,14 @@ public class Context { //依赖注入工厂类 protected final ResourceFactory resourceFactory; - public Context(long serverStartTime, Logger logger, ThreadPoolExecutor executor, int bufferCapacity, ObjectPool bufferPool, ObjectPool responsePool, - final int maxbody, Charset charset, InetSocketAddress address, ResourceFactory resourceFactory, final PrepareServlet prepare, final int readTimeoutSecond, final int writeTimeoutSecond) { + public Context(long serverStartTime, Logger logger, ThreadPoolExecutor executor, SSLContext sslContext, + int bufferCapacity, ObjectPool bufferPool, ObjectPool responsePool, + final int maxbody, Charset charset, InetSocketAddress address, ResourceFactory resourceFactory, + final PrepareServlet prepare, final int readTimeoutSecond, final int writeTimeoutSecond) { this.serverStartTime = serverStartTime; this.logger = logger; this.executor = executor; + this.sslContext = sslContext; this.bufferCapacity = bufferCapacity; this.bufferPool = bufferPool; this.responsePool = responsePool; @@ -97,6 +104,10 @@ public class Context { return resourceFactory; } + public SSLContext getSSLContext() { + return sslContext; + } + public int getMaxbody() { return maxbody; } diff --git a/src/org/redkale/net/Server.java b/src/org/redkale/net/Server.java index 9a4aa5a2c..87da9b8c3 100644 --- a/src/org/redkale/net/Server.java +++ b/src/org/redkale/net/Server.java @@ -13,6 +13,7 @@ import java.util.*; import java.util.concurrent.*; import java.util.concurrent.atomic.AtomicInteger; import java.util.logging.Logger; +import javax.net.ssl.SSLContext; import org.redkale.util.*; /** @@ -51,6 +52,9 @@ public abstract class Server prepare; + //SSL + protected SSLContext sslContext; + //服务的上下文对象 protected C context; diff --git a/src/org/redkale/net/http/HttpContext.java b/src/org/redkale/net/http/HttpContext.java index 6829efdb1..21bb38b09 100644 --- a/src/org/redkale/net/http/HttpContext.java +++ b/src/org/redkale/net/http/HttpContext.java @@ -12,6 +12,7 @@ import java.nio.charset.*; import java.security.*; import java.util.concurrent.*; import java.util.logging.*; +import javax.net.ssl.SSLContext; import org.redkale.asm.*; import static org.redkale.asm.Opcodes.*; import org.redkale.net.*; @@ -31,11 +32,12 @@ public class HttpContext extends Context { protected final ConcurrentHashMap asyncHandlerCreators = new ConcurrentHashMap<>(); - public HttpContext(long serverStartTime, Logger logger, ThreadPoolExecutor executor, int bufferCapacity, ObjectPool bufferPool, - ObjectPool responsePool, int maxbody, Charset charset, InetSocketAddress address, ResourceFactory resourceFactory, PrepareServlet prepare, - int readTimeoutSecond, int writeTimeoutSecond) { - super(serverStartTime, logger, executor, bufferCapacity, bufferPool, responsePool, maxbody, charset, - address, resourceFactory, prepare, readTimeoutSecond, writeTimeoutSecond); + public HttpContext(long serverStartTime, Logger logger, ThreadPoolExecutor executor, SSLContext sslContext, + final int bufferCapacity, final ObjectPool bufferPool, ObjectPool responsePool, + int maxbody, Charset charset, InetSocketAddress address, ResourceFactory resourceFactory, + PrepareServlet prepare, int readTimeoutSecond, int writeTimeoutSecond) { + super(serverStartTime, logger, executor, sslContext, bufferCapacity, bufferPool, responsePool, + maxbody, charset, address, resourceFactory, prepare, readTimeoutSecond, writeTimeoutSecond); random.setSeed(Math.abs(System.nanoTime())); } diff --git a/src/org/redkale/net/http/HttpServer.java b/src/org/redkale/net/http/HttpServer.java index 1ff8862e3..3ec9ae159 100644 --- a/src/org/redkale/net/http/HttpServer.java +++ b/src/org/redkale/net/http/HttpServer.java @@ -372,7 +372,7 @@ public class HttpServer extends Server responsePool = HttpResponse.createPool(createResponseCounter, cycleResponseCounter, this.responsePoolSize, null); - HttpContext httpcontext = new HttpContext(this.serverStartTime, this.logger, executor, rcapacity, bufferPool, responsePool, + HttpContext httpcontext = new HttpContext(this.serverStartTime, this.logger, executor, this.sslContext, rcapacity, bufferPool, responsePool, this.maxbody, this.charset, this.address, this.resourceFactory, this.prepare, this.readTimeoutSecond, this.writeTimeoutSecond); responsePool.setCreator((Object... params) -> new HttpResponse(httpcontext, new HttpRequest(httpcontext, addrHeader), addHeaders, setHeaders, defCookie, options, ((HttpPrepareServlet) prepare).renders)); return httpcontext; diff --git a/src/org/redkale/net/sncp/SncpContext.java b/src/org/redkale/net/sncp/SncpContext.java index ac6d1b0f5..0961baa31 100644 --- a/src/org/redkale/net/sncp/SncpContext.java +++ b/src/org/redkale/net/sncp/SncpContext.java @@ -10,6 +10,7 @@ import java.nio.ByteBuffer; import java.nio.charset.Charset; import java.util.concurrent.ThreadPoolExecutor; import java.util.logging.Logger; +import javax.net.ssl.SSLContext; import org.redkale.net.*; import org.redkale.util.*; @@ -21,10 +22,11 @@ import org.redkale.util.*; */ public class SncpContext extends Context { - public SncpContext(long serverStartTime, Logger logger, ThreadPoolExecutor executor, int bufferCapacity, ObjectPool bufferPool, - ObjectPool responsePool, int maxbody, Charset charset, InetSocketAddress address, ResourceFactory resourceFactory, PrepareServlet prepare, - int readTimeoutSecond, int writeTimeoutSecond) { - super(serverStartTime, logger, executor, bufferCapacity, bufferPool, responsePool, maxbody, charset, - address, resourceFactory, prepare, readTimeoutSecond, writeTimeoutSecond); + public SncpContext(long serverStartTime, Logger logger, ThreadPoolExecutor executor, SSLContext sslContext, + int bufferCapacity, ObjectPool bufferPool, ObjectPool responsePool, + int maxbody, Charset charset, InetSocketAddress address, ResourceFactory resourceFactory, + PrepareServlet prepare, int readTimeoutSecond, int writeTimeoutSecond) { + super(serverStartTime, logger, executor, sslContext, bufferCapacity, bufferPool, responsePool, + maxbody, charset, address, resourceFactory, prepare, readTimeoutSecond, writeTimeoutSecond); } } diff --git a/src/org/redkale/net/sncp/SncpServer.java b/src/org/redkale/net/sncp/SncpServer.java index 086553758..0156e4a33 100644 --- a/src/org/redkale/net/sncp/SncpServer.java +++ b/src/org/redkale/net/sncp/SncpServer.java @@ -106,7 +106,7 @@ public class SncpServer extends Server responsePool = SncpResponse.createPool(createResponseCounter, cycleResponseCounter, this.responsePoolSize, null); - SncpContext sncpcontext = new SncpContext(this.serverStartTime, this.logger, executor, rcapacity, bufferPool, responsePool, + SncpContext sncpcontext = new SncpContext(this.serverStartTime, this.logger, executor, this.sslContext, rcapacity, bufferPool, responsePool, this.maxbody, this.charset, this.address, this.resourceFactory, this.prepare, this.readTimeoutSecond, this.writeTimeoutSecond); responsePool.setCreator((Object... params) -> new SncpResponse(sncpcontext, new SncpRequest(sncpcontext))); return sncpcontext;