Skip to content

Commit da3e2a3

Browse files
committed
优化 solon-server-tomcat 适配
1 parent 860c4f6 commit da3e2a3

File tree

3 files changed

+96
-5
lines changed

3 files changed

+96
-5
lines changed

solon-jakarta-projects/solon-server/solon-server-tomcat-jakarta/src/main/java/org/noear/solon/server/tomcat/TomcatServer.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.noear.solon.core.util.IoUtil;
2323
import org.noear.solon.server.ServerProps;
2424
import org.noear.solon.server.handle.SessionProps;
25+
import org.noear.solon.server.prop.impl.HttpServerProps;
2526
import org.noear.solon.server.tomcat.http.TCHttpContextHandler;
2627

2728
import jakarta.servlet.MultipartConfigElement;
@@ -31,6 +32,21 @@
3132
* @since 2019/3/28 15:49
3233
*/
3334
public class TomcatServer extends TomcatServerBase {
35+
protected boolean isSecure;
36+
protected boolean enableWebSocket;
37+
38+
public boolean isSecure() {
39+
return isSecure;
40+
}
41+
42+
public void enableWebSocket(boolean enableWebSocket) {
43+
this.enableWebSocket = enableWebSocket;
44+
}
45+
46+
public TomcatServer(HttpServerProps props) {
47+
super(props);
48+
}
49+
3450
@Override
3551
protected Context initContext() {
3652
String _tempdir = IoUtil.getTempDirAsString("solon-server");
@@ -68,6 +84,16 @@ protected void addConnector(int port) throws Throwable {
6884
Connector connector = new Connector("HTTP/1.1");
6985

7086
connector.setPort(port);
87+
88+
//for ssl
89+
if(sslConfig.isSslEnable()) {
90+
// 1. 标识 ssl
91+
connector.setSecure(true);
92+
connector.setScheme("https");
93+
94+
isSecure = true;
95+
}
96+
7197
connector.setMaxPostSize(ServerProps.request_maxBodySizeAsInt());
7298
connector.setMaxPartHeaderSize(ServerProps.request_maxHeaderSize);
7399

solon-jakarta-projects/solon-server/solon-server-tomcat-jakarta/src/main/java/org/noear/solon/server/tomcat/TomcatServerBase.java

Lines changed: 66 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,79 @@
1919
import org.apache.catalina.connector.Connector;
2020
import org.apache.catalina.startup.Tomcat;
2121
import org.noear.solon.Utils;
22+
import org.noear.solon.lang.Nullable;
23+
import org.noear.solon.server.ServerConstants;
2224
import org.noear.solon.server.ServerLifecycle;
25+
import org.noear.solon.server.http.HttpServerConfigure;
26+
import org.noear.solon.server.prop.impl.HttpServerProps;
27+
import org.noear.solon.server.ssl.SslConfig;
28+
import org.slf4j.Logger;
29+
import org.slf4j.LoggerFactory;
30+
31+
import javax.net.ssl.SSLContext;
32+
import java.util.LinkedHashSet;
33+
import java.util.Set;
34+
import java.util.concurrent.Executor;
2335

2436
/**
2537
* @author Yukai
2638
* @since 2022/8/26 17:01
2739
**/
28-
public abstract class TomcatServerBase implements ServerLifecycle {
40+
public abstract class TomcatServerBase implements ServerLifecycle, HttpServerConfigure {
41+
static final Logger log = LoggerFactory.getLogger(TomcatServerBase.class);
42+
2943
protected Tomcat _server;
44+
protected final HttpServerProps props;
45+
protected SslConfig sslConfig = new SslConfig(ServerConstants.SIGNAL_HTTP);
46+
47+
protected Set<Integer> addHttpPorts = new LinkedHashSet<>();
48+
49+
protected boolean enableHttp2 = false;
50+
51+
public TomcatServerBase(HttpServerProps props) {
52+
this.props = props;
53+
}
54+
55+
/**
56+
* 是否允许Ssl
57+
*/
58+
@Override
59+
public void enableSsl(boolean enable, @Nullable SSLContext sslContext) {
60+
sslConfig.set(enable, sslContext);
61+
}
62+
63+
@Override
64+
public boolean isSupportedHttp2() {
65+
return true;
66+
}
67+
68+
@Override
69+
public void enableHttp2(boolean enable) {
70+
this.enableHttp2 = enable;
71+
}
72+
73+
public boolean isEnableHttp2(){
74+
return enableHttp2;
75+
}
76+
77+
/**
78+
* 添加 HttpPort(当 ssl 时,可再开个 http 端口)
79+
*/
80+
@Override
81+
public void addHttpPort(int port) {
82+
addHttpPorts.add(port);
83+
}
84+
85+
@Override
86+
public void setExecutor(Executor executor) {
87+
log.warn("Tomcat does not support user-defined executor");
88+
}
89+
90+
public HttpServerProps getProps() {
91+
return props;
92+
}
93+
94+
3095

3196
@Override
3297
public void start(String host, int port) throws Throwable {

solon-jakarta-projects/solon-server/solon-server-undertow-jakarta/src/main/java/org/noear/solon/server/undertow/UndertowServer.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,10 +88,6 @@ protected void setup(String host, int port) throws Throwable {
8888
builder.setIoThreads(props.getCoreThreads());
8989
builder.setWorkerThreads(props.getMaxThreads(props.isIoBound()));
9090

91-
if (isEnableHttp2()) {
92-
builder.setServerOption(UndertowOptions.ENABLE_HTTP2, true);
93-
}
94-
9591
if (Utils.isEmpty(host)) {
9692
host = "0.0.0.0";
9793
}
@@ -105,6 +101,10 @@ protected void setup(String host, int port) throws Throwable {
105101
builder.addHttpListener(port, host);
106102
}
107103

104+
if (isEnableHttp2()) {
105+
builder.setServerOption(UndertowOptions.ENABLE_HTTP2, true);
106+
}
107+
108108
//http add
109109
for (Integer portAdd : addHttpPorts) {
110110
builder.addHttpListener(portAdd, host);

0 commit comments

Comments
 (0)