Skip to content

Commit 2510911

Browse files
committed
完善 solon-server-jetty-jakarta jsp 适配
1 parent 511a7a5 commit 2510911

File tree

6 files changed

+36
-35
lines changed

6 files changed

+36
-35
lines changed

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

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import org.eclipse.jetty.server.Server;
2020
import org.eclipse.jetty.session.DefaultSessionIdManager;
2121
import org.eclipse.jetty.util.thread.QueuedThreadPool;
22+
import org.eclipse.jetty.websocket.api.UpgradeRequest;
2223
import org.eclipse.jetty.websocket.server.WebSocketUpgradeHandler;
2324
import org.noear.solon.boot.ServerLifecycle;
2425
import org.noear.solon.boot.jetty.websocket.WebSocketCreatorImpl;
@@ -52,9 +53,6 @@ public void stop() throws Throwable {
5253
}
5354

5455
protected void setup(String host, int port) throws IOException {
55-
Class<?> wsClz = ClassUtil.loadClass("org.eclipse.jetty.websocket.server.WebSocketHandler");
56-
57-
5856
QueuedThreadPool threadPool = new QueuedThreadPool(
5957
props.getMaxThreads(props.isIoBound()),
6058
props.getCoreThreads());
@@ -78,11 +76,11 @@ protected void setup(String host, int port) throws IOException {
7876
ServletContextHandler contextHandler = buildHandler();
7977
real.setHandler(contextHandler);
8078

81-
if (enableWebSocket && wsClz != null) {
79+
if (enableWebSocket && ClassUtil.hasClass(() -> UpgradeRequest.class)) {
8280
//real.setHandler(new HandlerHub(buildHandler()));
8381
WebSocketUpgradeHandler wsHandler = WebSocketUpgradeHandler.from(real, contextHandler);
8482
wsHandler.getServerWebSocketContainer().addMapping("/*", new WebSocketCreatorImpl());
85-
real.setHandler(wsHandler);
83+
//real.setHandler(wsHandler);
8684
}
8785

8886
//1.1:分发事件(充许外部扩展)

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

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,6 @@ public abstract class JettyServerBase implements ServerLifecycle , HttpServerCon
5151
protected boolean enableSessionState;
5252
private boolean isSecure;
5353

54-
private String _tempdir;
55-
56-
private int _fileOutputBuffer = 0;
57-
58-
private long _maxBodySize;
59-
private long _maxFileSize;
60-
6154
public boolean isSecure() {
6255
return isSecure;
6356
}
@@ -70,7 +63,6 @@ public void enableSessionState(boolean enableSessionState) {
7063
protected Set<Integer> addHttpPorts = new LinkedHashSet<>();
7164

7265

73-
7466
/**
7567
* 是否允许Ssl
7668
*/
@@ -157,10 +149,16 @@ protected ServerConnector getConnector(Server server, String host, int port, boo
157149
}
158150

159151
protected ServletContextHandler getServletHandler() throws IOException {
160-
_tempdir = System.getProperty("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);
152+
File tempDir = new File(System.getProperty("java.io.tmpdir"));
153+
File scratchDir = new File(tempDir.toString(), "solon-server");
154+
if(scratchDir.exists() == false){
155+
scratchDir.mkdirs();
156+
}
157+
158+
String _tempdir = scratchDir.getAbsolutePath();
159+
int _fileOutputBuffer = 1 * 1024 * 1024;
160+
long _maxBodySize = (ServerProps.request_maxBodySize > 0 ? ServerProps.request_maxBodySize : -1L);
161+
long _maxFileSize = (ServerProps.request_maxFileSize > 0 ? ServerProps.request_maxFileSize : -1L);
164162

165163
MultipartConfigElement multipartConfig = new MultipartConfigElement(
166164
_tempdir,
@@ -175,7 +173,11 @@ protected ServletContextHandler getServletHandler() throws IOException {
175173
ServletContextHandler handler = new ServletContextHandler();
176174
handler.setContextPath("/");
177175
handler.addServlet(servletHolder, "/");
176+
handler.setMaxFormContentSize((int)_maxBodySize);
178177

178+
if (ServerProps.request_useTempfile) {
179+
handler.setTempDirectory(scratchDir);
180+
}
179181

180182
//添加session state 支持
181183
if (enableSessionState) {
@@ -189,11 +191,7 @@ protected ServletContextHandler getServletHandler() throws IOException {
189191
//添加容器初始器
190192
handler.addBean(new JtContainerInitializer(handler.getServletContext()));
191193

192-
193194
//添加临时文件(用于jsp编译,或文件上传)
194-
File tempDir = new File(System.getProperty("java.io.tmpdir"));
195-
File scratchDir = new File(tempDir.toString(), "solon.server.jetty");
196-
197195
if (!scratchDir.exists()) {
198196
if (!scratchDir.mkdirs()) {
199197
throw new IOException("Unable to create scratch directory: " + scratchDir);

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,11 @@ private void start0(AppContext context) throws Throwable {
7070
//初始化属性
7171
ServerProps.init();
7272

73+
if (org.noear.solon.server.ServerProps.request_maxBodySize > 0) {
74+
System.setProperty("org.eclipse.jetty.server.Request.maxFormContentSize",
75+
String.valueOf(org.noear.solon.server.ServerProps.request_maxBodySize));
76+
}
77+
7378
if (ClassUtil.hasClass(() -> JettyJspServlet.class)) {
7479
_server = new JettyServerAddJsp();
7580
} else {

solon-jakarta-projects/solon-web/solon-web-servlet-jakarta/src/main/java/org/noear/solon/web/servlet/SolonServletInstaller.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222
import jakarta.servlet.annotation.WebServlet;
2323
import org.noear.solon.Solon;
2424
import org.noear.solon.Utils;
25-
import org.noear.solon.web.servlet.holder.FilterHodler;
26-
import org.noear.solon.web.servlet.holder.ServletHolder;
25+
import org.noear.solon.web.servlet.holder.FilterAnnoHodler;
26+
import org.noear.solon.web.servlet.holder.ServletAnnoHolder;
2727

2828
import java.util.*;
2929

@@ -33,9 +33,9 @@
3333
*/
3434
public class SolonServletInstaller {
3535
Set<ServletContainerInitializer> initializers = new LinkedHashSet<>();
36-
Set<FilterHodler> filters = new LinkedHashSet<>();
36+
Set<FilterAnnoHodler> filters = new LinkedHashSet<>();
3737
Set<EventListener> listeners = new LinkedHashSet<>();
38-
Set<ServletHolder> servlets = new LinkedHashSet<>();
38+
Set<ServletAnnoHolder> servlets = new LinkedHashSet<>();
3939

4040
public SolonServletInstaller() {
4141
Solon.context().beanForeach((bw) -> {
@@ -53,14 +53,14 @@ public SolonServletInstaller() {
5353
if (bw.raw() instanceof Filter) {
5454
WebFilter anno = bw.clz().getAnnotation(WebFilter.class);
5555
if (anno != null) {
56-
filters.add(new FilterHodler(anno, bw.raw()));
56+
filters.add(new FilterAnnoHodler(anno, bw.raw()));
5757
}
5858
}
5959

6060
if (bw.raw() instanceof Servlet) {
6161
WebServlet anno = bw.clz().getAnnotation(WebServlet.class);
6262
if (anno != null) {
63-
servlets.add(new ServletHolder(anno, bw.raw()));
63+
servlets.add(new ServletAnnoHolder(anno, bw.raw()));
6464
}
6565
}
6666
});
@@ -75,7 +75,7 @@ public void startup(Set<Class<?>> set, ServletContext sc) throws ServletExceptio
7575
sc.addListener(l);
7676
}
7777

78-
for (FilterHodler f : filters) {
78+
for (FilterAnnoHodler f : filters) {
7979
String[] urlPatterns = f.anno.value();
8080
if (urlPatterns.length == 0) {
8181
urlPatterns = f.anno.urlPatterns();
@@ -106,7 +106,7 @@ public void startup(Set<Class<?>> set, ServletContext sc) throws ServletExceptio
106106
}
107107
}
108108

109-
for (ServletHolder s : servlets) {
109+
for (ServletAnnoHolder s : servlets) {
110110
String[] urlPatterns = s.anno.value();
111111
if (urlPatterns.length == 0) {
112112
urlPatterns = s.anno.urlPatterns();

solon-jakarta-projects/solon-web/solon-web-servlet-jakarta/src/main/java/org/noear/solon/web/servlet/holder/FilterHodler.java renamed to solon-jakarta-projects/solon-web/solon-web-servlet-jakarta/src/main/java/org/noear/solon/web/servlet/holder/FilterAnnoHodler.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@
2020

2121
import java.util.Objects;
2222

23-
public class FilterHodler {
23+
public class FilterAnnoHodler {
2424
public final WebFilter anno;
2525
public final Filter filter;
2626

27-
public FilterHodler(WebFilter anno, Filter filter) {
27+
public FilterAnnoHodler(WebFilter anno, Filter filter) {
2828
this.anno = anno;
2929
this.filter = filter;
3030
}
@@ -33,7 +33,7 @@ public FilterHodler(WebFilter anno, Filter filter) {
3333
public boolean equals(Object o) {
3434
if (this == o) return true;
3535
if (o == null || getClass() != o.getClass()) return false;
36-
FilterHodler that = (FilterHodler) o;
36+
FilterAnnoHodler that = (FilterAnnoHodler) o;
3737
return Objects.equals(anno, that.anno) &&
3838
Objects.equals(filter, that.filter);
3939
}

solon-jakarta-projects/solon-web/solon-web-servlet-jakarta/src/main/java/org/noear/solon/web/servlet/holder/ServletHolder.java renamed to solon-jakarta-projects/solon-web/solon-web-servlet-jakarta/src/main/java/org/noear/solon/web/servlet/holder/ServletAnnoHolder.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@
2020

2121
import java.util.Objects;
2222

23-
public class ServletHolder {
23+
public class ServletAnnoHolder {
2424
public final WebServlet anno;
2525
public final Servlet servlet;
2626

27-
public ServletHolder(WebServlet anno, Servlet servlet) {
27+
public ServletAnnoHolder(WebServlet anno, Servlet servlet) {
2828
this.anno = anno;
2929
this.servlet = servlet;
3030
}
@@ -33,7 +33,7 @@ public ServletHolder(WebServlet anno, Servlet servlet) {
3333
public boolean equals(Object o) {
3434
if (this == o) return true;
3535
if (o == null || getClass() != o.getClass()) return false;
36-
ServletHolder that = (ServletHolder) o;
36+
ServletAnnoHolder that = (ServletAnnoHolder) o;
3737
return Objects.equals(anno, that.anno) &&
3838
Objects.equals(servlet, that.servlet);
3939
}

0 commit comments

Comments
 (0)