Skip to content

Commit 3ab37cf

Browse files
committed
优化 solon-server-tomcat 适配
1 parent da3e2a3 commit 3ab37cf

File tree

4 files changed

+43
-26
lines changed

4 files changed

+43
-26
lines changed

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

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -80,18 +80,20 @@ protected Context initContext() {
8080
}
8181

8282
@Override
83-
protected void addConnector(int port) throws Throwable {
83+
protected void addConnector(int port, boolean isMain) throws Throwable {
8484
Connector connector = new Connector("HTTP/1.1");
8585

8686
connector.setPort(port);
8787

88-
//for ssl
89-
if(sslConfig.isSslEnable()) {
90-
// 1. 标识 ssl
91-
connector.setSecure(true);
92-
connector.setScheme("https");
88+
if (isMain) {
89+
//for ssl
90+
if (sslConfig.isSslEnable()) {
91+
// 1. 标识 ssl
92+
connector.setSecure(true);
93+
connector.setScheme("https");
9394

94-
isSecure = true;
95+
isSecure = true;
96+
}
9597
}
9698

9799
connector.setMaxPostSize(ServerProps.request_maxBodySizeAsInt());

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,12 @@ public void start(String host, int port) throws Throwable {
105105
initContext();
106106

107107
//添加连接端口
108-
addConnector(port);
108+
addConnector(port, true);
109+
110+
//http add
111+
for (Integer portAdd : addHttpPorts) {
112+
addConnector(portAdd, false);
113+
}
109114

110115
_server.start();
111116
}
@@ -121,5 +126,5 @@ public void stop() throws Throwable {
121126

122127
protected abstract Context initContext() throws Throwable;
123128

124-
protected abstract void addConnector(int port) throws Throwable;
129+
protected abstract void addConnector(int port, boolean isMain) throws Throwable;
125130
}

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

Lines changed: 27 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,14 @@
1717

1818
import org.apache.catalina.util.ServerInfo;
1919
import org.noear.solon.Solon;
20-
import org.noear.solon.SolonApp;
20+
import org.noear.solon.Utils;
21+
import org.noear.solon.core.event.EventBus;
2122
import org.noear.solon.server.ServerConstants;
22-
import org.noear.solon.server.ServerLifecycle;
2323
import org.noear.solon.server.ServerProps;
2424
import org.noear.solon.server.prop.impl.HttpServerProps;
2525
import org.noear.solon.core.*;
26-
import org.noear.solon.core.util.ClassUtil;
2726

27+
import org.noear.solon.server.prop.impl.WebSocketServerProps;
2828
import org.noear.solon.server.tomcat.TomcatServer;
2929
import org.slf4j.Logger;
3030
import org.slf4j.LoggerFactory;
@@ -42,7 +42,7 @@ public static Signal signal() {
4242
return _signal;
4343
}
4444

45-
private ServerLifecycle _server = null;
45+
private TomcatServer _server = null;
4646

4747
public static String solon_server_ver() {
4848
return ServerInfo.getServerInfo() + "/" + Solon.version();
@@ -62,42 +62,53 @@ public void start(AppContext context) {
6262
});
6363

6464
context.lifecycle(ServerConstants.SIGNAL_LIFECYCLE_INDEX, () -> {
65-
start0(Solon.app());
65+
start0(context);
6666
});
6767
}
6868

69-
private void start0(SolonApp app) throws Throwable {
69+
private void start0(AppContext context) throws Throwable {
7070
//初始化属性
7171
ServerProps.init();
7272

73-
Class<?> jspClz = ClassUtil.loadClass("org.apache.jasper.servlet.JspServlet");
73+
long time_start = System.currentTimeMillis();
7474

75-
HttpServerProps props = HttpServerProps.getInstance();
75+
HttpServerProps props = new HttpServerProps();
7676
final String _host = props.getHost();
7777
final int _port = props.getPort();
7878
final String _name = props.getName();
7979

80-
_server = new TomcatServer();
81-
82-
long time_start = System.currentTimeMillis();
80+
_server = new TomcatServer(props);
81+
_server.enableWebSocket(context.app().enableWebSocket());
8382

83+
EventBus.publish(_server);
8484
_server.start(_host, _port);
8585

86+
8687
final String _wrapHost = props.getWrapHost();
8788
final int _wrapPort = props.getWrapPort();
8889
_signal = new SignalSim(_name, _wrapHost, _wrapPort, "http", SignalType.HTTP);
8990

90-
app.signalAdd(_signal);
91+
context.app().signalAdd(_signal);
9192

9293
long time_end = System.currentTimeMillis();
9394

94-
String connectorInfo = "solon.connector:main: tomcat: Started ServerConnector@{HTTP/1.1,[http/1.1]";
95-
if (app.enableWebSocket()) {
96-
String wsServerUrl = props.buildWsServerUrl(false);
95+
String connectorInfo = "Connector:main: tomcat: Started ServerConnector@{HTTP/1.1,[http/1.1]";
96+
if (_server.isSecure() && _server.isEnableHttp2()) {
97+
connectorInfo += ";HTTP/2,[http/2]";
98+
}
99+
if (context.app().enableWebSocket()) {
100+
//有名字定义时,添加信号注册
101+
WebSocketServerProps wsProps = WebSocketServerProps.getInstance();
102+
if (Utils.isNotEmpty(wsProps.getName())) {
103+
SignalSim wsSignal = new SignalSim(wsProps.getName(), _wrapHost, _wrapPort, "ws", SignalType.WEBSOCKET);
104+
context.app().signalAdd(wsSignal);
105+
}
106+
107+
String wsServerUrl = props.buildWsServerUrl(_server.isSecure());
97108
log.info(connectorInfo + "[WebSocket]}{" + wsServerUrl + "}");
98109
}
99110

100-
String httpServerUrl = props.buildHttpServerUrl(false);
111+
String httpServerUrl = props.buildHttpServerUrl(_server.isSecure());
101112
log.info(connectorInfo + "}{" + httpServerUrl + "}");
102113
log.info("Server:main: tomcat: Started (" + solon_server_ver() + ") @" + (time_end - time_start) + "ms");
103114
}

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,6 @@ private void start0(AppContext context) throws Throwable {
7878
//初始化属性
7979
ServerProps.init();
8080

81-
8281
long time_start = System.currentTimeMillis();
8382

8483
HttpServerProps props = new HttpServerProps();

0 commit comments

Comments
 (0)