Skip to content

Commit 0259296

Browse files
committed
完善 solon-server-jetty-jakarta 适配
1 parent d7265bb commit 0259296

File tree

19 files changed

+160
-173
lines changed

19 files changed

+160
-173
lines changed

solon-jakarta-parent/pom.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,13 @@
2222

2323
<jakarta.logback.version>1.5.18</jakarta.logback.version>
2424
<jakarta.servlet5.version>5.0.0</jakarta.servlet5.version>
25-
<jakarta.servlet.version>6.1.0</jakarta.servlet.version>
25+
<jakarta.servlet6.version>6.1.0</jakarta.servlet6.version>
2626

2727
<cxf.version>4.1.2</cxf.version>
2828

29-
<jetty.version>12.0.14</jetty.version>
30-
<jetty-servlet.version>11.0.24</jetty-servlet.version>
31-
<jetty-servlet-jstl.version>10.0.24</jetty-servlet-jstl.version>
29+
<jetty.version>12.1.0</jetty.version>
30+
<jetty-servlet.version>11.0.26</jetty-servlet.version>
31+
<jetty-servlet-jstl.version>10.0.26</jetty-servlet-jstl.version>
3232
</properties>
3333

3434
<dependencyManagement>

solon-jakarta-projects/solon-server/solon-server-jetty-add-jsp-jakarta/pom.xml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,27 +19,27 @@
1919

2020
<dependencies>
2121
<dependency>
22-
<groupId>javax.servlet</groupId>
23-
<artifactId>javax.servlet-api</artifactId>
22+
<groupId>jakarta.servlet</groupId>
23+
<artifactId>jakarta.servlet-api</artifactId>
24+
<version>${jakarta.servlet6.version}</version>
2425
</dependency>
2526

2627
<dependency>
27-
<groupId>org.eclipse.jetty</groupId>
28-
<artifactId>jetty-webapp</artifactId>
29-
<version>${jetty-servlet.version}</version>
28+
<groupId>org.eclipse.jetty.ee10</groupId>
29+
<artifactId>jetty-ee10-webapp</artifactId>
30+
<version>${jetty.version}</version>
3031
</dependency>
3132

3233
<dependency>
33-
<groupId>org.eclipse.jetty</groupId>
34-
<artifactId>apache-jsp</artifactId>
35-
<version>${jetty-servlet.version}</version>
34+
<groupId>org.eclipse.jetty.ee10</groupId>
35+
<artifactId>jetty-ee10-apache-jsp</artifactId>
36+
<version>${jetty.version}</version>
3637
</dependency>
3738

3839
<dependency>
3940
<groupId>org.eclipse.jetty</groupId>
4041
<artifactId>apache-jstl</artifactId>
4142
<version>${jetty-servlet-jstl.version}</version>
42-
<type>pom</type>
4343
</dependency>
4444
</dependencies>
4545

solon-jakarta-projects/solon-server/solon-server-jetty-jakarta/pom.xml

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,11 @@
4141
</dependency>
4242

4343
<dependency>
44-
<groupId>org.eclipse.jetty</groupId>
45-
<artifactId>jetty-servlet</artifactId>
46-
<version>${jetty-servlet.version}</version>
44+
<groupId>org.eclipse.jetty.ee10</groupId>
45+
<artifactId>jetty-ee10-servlet</artifactId>
46+
<version>${jetty.version}</version>
4747
</dependency>
4848

49-
5049
<!-- jetty web socket -->
5150
<dependency>
5251
<groupId>org.eclipse.jetty.websocket</groupId>
@@ -56,27 +55,30 @@
5655

5756
<!-- jetty jsp -->
5857
<dependency>
59-
<groupId>org.eclipse.jetty</groupId>
60-
<artifactId>jetty-webapp</artifactId>
61-
<version>${jetty-servlet.version}</version>
58+
<groupId>org.eclipse.jetty.ee10</groupId>
59+
<artifactId>jetty-ee10-webapp</artifactId>
60+
<version>${jetty.version}</version>
6261
<scope>provided</scope>
6362
</dependency>
6463

6564
<dependency>
66-
<groupId>org.eclipse.jetty</groupId>
67-
<artifactId>apache-jsp</artifactId>
68-
<version>${jetty-servlet.version}</version>
69-
<type>jar</type>
65+
<groupId>org.eclipse.jetty.ee10</groupId>
66+
<artifactId>jetty-ee10-apache-jsp</artifactId>
67+
<version>${jetty.version}</version>
7068
<scope>provided</scope>
7169
</dependency>
7270

7371
<dependency>
7472
<groupId>org.eclipse.jetty</groupId>
7573
<artifactId>apache-jstl</artifactId>
7674
<version>${jetty-servlet-jstl.version}</version>
77-
<type>pom</type>
7875
<scope>provided</scope>
7976
</dependency>
77+
78+
<dependency>
79+
<groupId>org.noear</groupId>
80+
<artifactId>solon-test</artifactId>
81+
</dependency>
8082
</dependencies>
8183

8284
</project>

solon-jakarta-projects/solon-server/solon-server-jetty-jakarta/src/main/java/org/noear/solon/boot/jetty/HandlerHub.java

Lines changed: 0 additions & 48 deletions
This file was deleted.

solon-jakarta-projects/solon-server/solon-server-jetty-jakarta/src/main/java/org/noear/solon/boot/jetty/JettyServer.java

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,19 @@
1515
*/
1616
package org.noear.solon.boot.jetty;
1717

18-
import org.eclipse.jetty.server.Handler;
18+
import org.eclipse.jetty.ee10.servlet.ServletContextHandler;
1919
import org.eclipse.jetty.server.Server;
20-
import org.eclipse.jetty.server.session.DefaultSessionIdManager;
20+
import org.eclipse.jetty.session.DefaultSessionIdManager;
2121
import org.eclipse.jetty.util.thread.QueuedThreadPool;
22+
import org.eclipse.jetty.websocket.server.WebSocketUpgradeHandler;
2223
import org.noear.solon.boot.ServerLifecycle;
24+
import org.noear.solon.boot.jetty.websocket.WebSocketCreatorImpl;
2325
import org.noear.solon.core.event.EventBus;
2426
import org.noear.solon.core.util.ClassUtil;
2527

2628
import java.io.IOException;
2729

28-
class JettyServer extends JettyServerBase implements ServerLifecycle {
30+
public class JettyServer extends JettyServerBase implements ServerLifecycle {
2931
protected Server real = null;
3032

3133
protected boolean enableWebSocket;
@@ -70,14 +72,17 @@ protected void setup(String host, int port) throws IOException {
7072

7173
//session 支持
7274
if (enableSessionState) {
73-
real.setSessionIdManager(new DefaultSessionIdManager(real));
75+
real.addBean(new DefaultSessionIdManager(real));
7476
}
7577

78+
ServletContextHandler contextHandler = buildHandler();
79+
real.setHandler(contextHandler);
80+
7681
if (enableWebSocket && wsClz != null) {
77-
real.setHandler(new HandlerHub(buildHandler()));
78-
} else {
79-
//没有ws包 或 没有开启
80-
real.setHandler(buildHandler());
82+
//real.setHandler(new HandlerHub(buildHandler()));
83+
WebSocketUpgradeHandler wsHandler = WebSocketUpgradeHandler.from(real, contextHandler);
84+
wsHandler.getServerWebSocketContainer().addMapping("/*", new WebSocketCreatorImpl());
85+
real.setHandler(wsHandler);
8186
}
8287

8388
//1.1:分发事件(充许外部扩展)
@@ -87,7 +92,7 @@ protected void setup(String host, int port) throws IOException {
8792
/**
8893
* 获取Server Handler
8994
*/
90-
protected Handler buildHandler() throws IOException {
95+
protected ServletContextHandler buildHandler() throws IOException {
9196
return getServletHandler();
9297
}
9398
}

solon-jakarta-projects/solon-server/solon-server-jetty-jakarta/src/main/java/org/noear/solon/boot/jetty/JettyServerAddJsp.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,9 @@
1515
*/
1616
package org.noear.solon.boot.jetty;
1717

18-
import org.eclipse.jetty.jsp.JettyJspServlet;
19-
import org.eclipse.jetty.server.Handler;
20-
import org.eclipse.jetty.servlet.ServletContextHandler;
21-
import org.eclipse.jetty.servlet.ServletHolder;
18+
import org.eclipse.jetty.ee10.jsp.JettyJspServlet;
19+
import org.eclipse.jetty.ee10.servlet.ServletContextHandler;
20+
import org.eclipse.jetty.ee10.servlet.ServletHolder;
2221
import org.noear.solon.boot.jetty.http.JtJspStarter;
2322
import org.noear.solon.boot.jetty.jsp.JspTldLocator;
2423

@@ -29,13 +28,13 @@
2928
import java.net.URLClassLoader;
3029
import java.util.Map;
3130

32-
class JettyServerAddJsp extends JettyServer {
31+
public class JettyServerAddJsp extends JettyServer {
3332

3433
/**
3534
* 获取Server Handler
3635
*/
3736
@Override
38-
protected Handler buildHandler() throws IOException {
37+
protected ServletContextHandler buildHandler() throws IOException {
3938
ServletContextHandler handler = getServletHandler();
4039

4140
enableJspSupport(handler);
@@ -70,12 +69,12 @@ private void addTdlSupport(ServletContext servletContext) throws IOException {
7069
ServletContextHandler.JspConfig jspConfig = (ServletContextHandler.JspConfig) servletContext.getJspConfigDescriptor();
7170
if (jspConfig == null) {
7271
jspConfig = new ServletContextHandler.JspConfig();
73-
((ServletContextHandler.Context) servletContext).setJspConfigDescriptor(jspConfig);
72+
((ServletContextHandler.ServletContextApi) servletContext).setJspConfigDescriptor(jspConfig);
7473
}
7574

7675
for (TaglibDescriptor descriptor : tagLibInfos.values()) {
7776
jspConfig.addTaglibDescriptor(descriptor);
7877
}
7978
}
8079
}
81-
}
80+
}

solon-jakarta-projects/solon-server/solon-server-jetty-jakarta/src/main/java/org/noear/solon/boot/jetty/JettyServerBase.java

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,12 @@
1515
*/
1616
package org.noear.solon.boot.jetty;
1717

18+
import jakarta.servlet.MultipartConfigElement;
19+
import org.eclipse.jetty.ee10.servlet.ServletContextHandler;
20+
import org.eclipse.jetty.ee10.servlet.ServletHolder;
21+
import org.eclipse.jetty.ee10.servlet.SessionHandler;
1822
import org.eclipse.jetty.http.HttpVersion;
1923
import org.eclipse.jetty.server.*;
20-
import org.eclipse.jetty.server.session.SessionHandler;
21-
import org.eclipse.jetty.servlet.ServletContextHandler;
2224
import org.eclipse.jetty.util.ssl.SslContextFactory;
2325
import org.noear.solon.Utils;
2426
import org.noear.solon.boot.ServerConstants;
@@ -40,14 +42,22 @@
4042
import java.util.Set;
4143
import java.util.concurrent.Executor;
4244

43-
abstract class JettyServerBase implements ServerLifecycle , HttpServerConfigure {
45+
import static org.eclipse.jetty.ee10.servlet.ServletContextHandler.getServletContext;
46+
47+
public abstract class JettyServerBase implements ServerLifecycle , HttpServerConfigure {
4448
protected Executor executor;
4549
protected HttpServerProps props = HttpServerProps.getInstance();
4650
protected SslConfig sslConfig = new SslConfig(ServerConstants.SIGNAL_HTTP);
4751
protected boolean enableSessionState;
48-
4952
private boolean isSecure;
5053

54+
private String _tempdir;
55+
56+
private int _fileOutputBuffer = 0;
57+
58+
private long _maxBodySize;
59+
private long _maxFileSize;
60+
5161
public boolean isSecure() {
5262
return isSecure;
5363
}
@@ -60,6 +70,7 @@ public void enableSessionState(boolean enableSessionState) {
6070
protected Set<Integer> addHttpPorts = new LinkedHashSet<>();
6171

6272

73+
6374
/**
6475
* 是否允许Ssl
6576
*/
@@ -146,9 +157,24 @@ protected ServerConnector getConnector(Server server, String host, int port, boo
146157
}
147158

148159
protected ServletContextHandler getServletHandler() throws IOException {
160+
_tempdir = System.getenv("java.io.tmpdir");
161+
_fileOutputBuffer = 1 * 1024 * 1024;
162+
_maxBodySize = (ServerProps.request_maxBodySize > 0 ? ServerProps.request_maxBodySize : -1L);
163+
_maxFileSize = (ServerProps.request_maxFileSize > 0 ? ServerProps.request_maxFileSize : -1L);
164+
165+
MultipartConfigElement multipartConfig = new MultipartConfigElement(
166+
_tempdir,
167+
_maxFileSize,
168+
_maxBodySize,
169+
_fileOutputBuffer);
170+
171+
ServletHolder servletHolder = new ServletHolder(new JtHttpContextServletHandler());
172+
servletHolder.setAsyncSupported(true);
173+
servletHolder.getRegistration().setMultipartConfig(multipartConfig);
174+
149175
ServletContextHandler handler = new ServletContextHandler();
150176
handler.setContextPath("/");
151-
handler.addServlet(JtHttpContextServletHandler.class, "/").setAsyncSupported(true);
177+
handler.addServlet(servletHolder, "/");
152178

153179

154180
//添加session state 支持
@@ -161,7 +187,7 @@ protected ServletContextHandler getServletHandler() throws IOException {
161187
}
162188

163189
//添加容器初始器
164-
handler.addLifeCycleListener(new JtContainerInitializer(handler.getServletContext()));
190+
handler.addBean(new JtContainerInitializer(handler.getServletContext()));
165191

166192

167193
//添加临时文件(用于jsp编译,或文件上传)

solon-jakarta-projects/solon-server/solon-server-jetty-jakarta/src/main/java/org/noear/solon/boot/jetty/http/JtHttpContextServletHandler.java

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,18 @@
1515
*/
1616
package org.noear.solon.boot.jetty.http;
1717

18-
import org.eclipse.jetty.http.MultiPartFormInputStream;
1918
import org.noear.solon.boot.ServerProps;
20-
import org.noear.solon.boot.jetty.XPluginImp;
19+
import org.noear.solon.boot.jetty.integration.JettyPlugin;
2120
import org.noear.solon.core.handle.Context;
2221
import org.noear.solon.web.servlet.SolonServletHandler;
2322

2423
import jakarta.servlet.MultipartConfigElement;
2524
import jakarta.servlet.ServletException;
2625
import jakarta.servlet.http.HttpServletRequest;
2726
import jakarta.servlet.http.HttpServletResponse;
28-
import java.io.BufferedInputStream;
27+
2928
import java.io.File;
3029
import java.io.IOException;
31-
import java.io.InputStream;
3230

3331
public class JtHttpContextServletHandler extends SolonServletHandler {
3432
private File _tempdir;
@@ -54,9 +52,9 @@ public void init() throws ServletException {
5452
}
5553

5654
@Override
57-
protected void preHandle(Context ctx) throws IOException {
55+
protected void preHandle(Context ctx) {
5856
if (ServerProps.output_meta) {
59-
ctx.headerSet("Solon-Boot", XPluginImp.solon_boot_ver());
57+
ctx.headerSet("Solon-Boot", JettyPlugin.solon_boot_ver());
6058
}
6159
}
6260

@@ -76,14 +74,14 @@ protected void service(HttpServletRequest request, HttpServletResponse response)
7674
if (ServerProps.request_useTempfile) {
7775
//如果使用临时文件
7876
//
79-
InputStream in = new BufferedInputStream(request.getInputStream());
80-
String ct = request.getContentType();
77+
// InputStream in = new BufferedInputStream(request.getInputStream());
78+
//String ct = request.getContentType();
8179

8280

83-
MultiPartFormInputStream multiPartParser = new MultiPartFormInputStream(in, ct, config, _tempdir);
84-
multiPartParser.setWriteFilesWithFilenames(true);
81+
// MultiPartFormInputStream multiPartParser = new MultiPartFormInputStream(in, ct, config, _tempdir);
82+
// multiPartParser.setWriteFilesWithFilenames(true);
8583

86-
request = new JtHttpRequestWrapper(request, multiPartParser);
84+
//request = new JtHttpRequestWrapper(request, multiPartParser);
8785
}
8886
}
8987

0 commit comments

Comments
 (0)