This commit is contained in:
Looly 2024-12-25 22:33:19 +08:00
parent 3a79f73927
commit ae7e3b76cb
4 changed files with 43 additions and 25 deletions

View File

@ -99,6 +99,7 @@ public class SmartHttpServerEngine extends AbstractServerEngine {
configuration.setHttpIdleTimeout((int) idleTimeout); configuration.setHttpIdleTimeout((int) idleTimeout);
} }
// 请求处理器
bootstrap.httpHandler(new HttpServerHandler() { bootstrap.httpHandler(new HttpServerHandler() {
@Override @Override
public void handle(final HttpRequest request, final HttpResponse response) { public void handle(final HttpRequest request, final HttpResponse response) {

View File

@ -32,6 +32,7 @@ import java.net.InetSocketAddress;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
import java.util.concurrent.ThreadPoolExecutor;
/** /**
* 基于Sun HttpServer的HTTP服务器引擎实现 * 基于Sun HttpServer的HTTP服务器引擎实现
@ -144,6 +145,8 @@ public class SunHttpServerEngine extends AbstractServerEngine {
@Override @Override
protected void initEngine() { protected void initEngine() {
final ServerConfig config = this.config; final ServerConfig config = this.config;
// SSL
final InetSocketAddress address = new InetSocketAddress(config.getHost(), config.getPort()); final InetSocketAddress address = new InetSocketAddress(config.getHost(), config.getPort());
final SSLContext sslContext = config.getSslContext(); final SSLContext sslContext = config.getSslContext();
try { try {
@ -158,9 +161,26 @@ public class SunHttpServerEngine extends AbstractServerEngine {
throw new IORuntimeException(e); throw new IORuntimeException(e);
} }
// 线程池和连接配置
setExecutor(createExecutor(config));
// 请求处理器
createContext("/", exchange -> handler.handle(
new SunServerRequest(exchange),
new SunServerResponse(exchange)
));
}
/**
* 创建线程池
*
* @param config {@link ServerConfig}
* @return {@link ThreadPoolExecutor}
*/
private static ThreadPoolExecutor createExecutor(final ServerConfig config) {
final ExecutorBuilder executorBuilder = ExecutorBuilder.of();
// 线程池 // 线程池
final int coreThreads = config.getCoreThreads(); final int coreThreads = config.getCoreThreads();
final ExecutorBuilder executorBuilder = ExecutorBuilder.of();
if (coreThreads > 0) { if (coreThreads > 0) {
executorBuilder.setCorePoolSize(coreThreads); executorBuilder.setCorePoolSize(coreThreads);
} }
@ -172,11 +192,6 @@ public class SunHttpServerEngine extends AbstractServerEngine {
if (idleTimeout > 0) { if (idleTimeout > 0) {
executorBuilder.setKeepAliveTime(idleTimeout); executorBuilder.setKeepAliveTime(idleTimeout);
} }
return executorBuilder.build();
setExecutor(executorBuilder.build());
createContext("/", exchange -> SunHttpServerEngine.this.handler.handle(
new SunServerRequest(exchange),
new SunServerResponse(exchange)
));
} }
} }

View File

@ -99,7 +99,7 @@ public class TomcatEngine extends AbstractServerEngine {
} }
/** /**
* 创建Connector * 创建Connector包括SSL配置
* *
* @return Connector * @return Connector
*/ */

View File

@ -66,14 +66,9 @@ public class UndertowEngine extends AbstractServerEngine {
if (null != this.undertow) { if (null != this.undertow) {
return; return;
} }
final Undertow.Builder builder = Undertow.builder() final Undertow.Builder builder = Undertow.builder();
.setHandler(exchange -> {
this.handler.handle(
new UndertowRequest(exchange),
new UndertowResponse(exchange));
});
final ServerConfig config = this.config; final ServerConfig config = this.config;
// 选项 // 选项
final int maxHeaderSize = config.getMaxHeaderSize(); final int maxHeaderSize = config.getMaxHeaderSize();
if(maxHeaderSize > 0){ if(maxHeaderSize > 0){
@ -96,6 +91,7 @@ public class UndertowEngine extends AbstractServerEngine {
builder.setWorkerThreads(maxThreads); builder.setWorkerThreads(maxThreads);
} }
// SSL配置
final SSLContext sslContext = config.getSslContext(); final SSLContext sslContext = config.getSslContext();
if(null != sslContext){ if(null != sslContext){
builder.addHttpsListener(config.getPort(), config.getHost(), sslContext); builder.addHttpsListener(config.getPort(), config.getHost(), sslContext);
@ -103,6 +99,12 @@ public class UndertowEngine extends AbstractServerEngine {
builder.addHttpListener(config.getPort(), config.getHost()); builder.addHttpListener(config.getPort(), config.getHost());
} }
// 请求处理器
builder.setHandler(exchange -> {
this.handler.handle(
new UndertowRequest(exchange),
new UndertowResponse(exchange));
});
this.undertow = builder.build(); this.undertow = builder.build();
} }
} }