mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-07-21 15:09:48 +08:00
update Jetty to 12 and add JettyRequest and JettyResponse
This commit is contained in:
@@ -37,10 +37,8 @@
|
||||
<httpclient5.version>5.4.1</httpclient5.version>
|
||||
<httpclient4.version>4.5.14</httpclient4.version>
|
||||
<okhttp.version>4.12.0</okhttp.version>
|
||||
<!-- 固定 2.2.x支持到JDK8 -->
|
||||
<undertow.version>2.2.36.Final</undertow.version>
|
||||
<!-- 固定 9.x支持到JDK8 -->
|
||||
<jetty.version>9.4.56.v20240826</jetty.version>
|
||||
<undertow.version>2.3.18.Final</undertow.version>
|
||||
<jetty.version>12.0.19</jetty.version>
|
||||
<!-- 固定 9.x支持到JDK8 -->
|
||||
<tomcat.version>9.0.97</tomcat.version>
|
||||
<smartboot.version>1.4.3</smartboot.version>
|
||||
@@ -85,13 +83,6 @@
|
||||
<version>5.0.0</version>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>javax.servlet</groupId>
|
||||
<artifactId>javax.servlet-api</artifactId>
|
||||
<version>4.0.1</version>
|
||||
<scope>provided</scope>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
|
||||
<!-- 第三方HTTP客户端库 -->
|
||||
<dependency>
|
||||
|
@@ -36,9 +36,6 @@ import javax.net.ssl.SSLContext;
|
||||
public class JettyEngine extends AbstractServerEngine {
|
||||
|
||||
private Server server;
|
||||
/**
|
||||
* 由于Jetty9和以上版本中接口实现不同,此处根据不同版本做兼容自定义
|
||||
*/
|
||||
private Handler jettyHandler;
|
||||
|
||||
/**
|
||||
@@ -112,7 +109,7 @@ public class JettyEngine extends AbstractServerEngine {
|
||||
final Server server = new Server(threadPool);
|
||||
server.addConnector(createConnector(server));
|
||||
server.setHandler(ObjUtil.defaultIfNull(this.jettyHandler,
|
||||
() -> new Jetty9Handler(this.handler)));
|
||||
() -> new JettyHandler(this.handler)));
|
||||
this.server = server;
|
||||
}
|
||||
|
||||
|
@@ -17,20 +17,17 @@
|
||||
package cn.hutool.v7.http.server.engine.jetty;
|
||||
|
||||
import cn.hutool.v7.http.server.handler.HttpHandler;
|
||||
import cn.hutool.v7.http.server.servlet.JavaxServletRequest;
|
||||
import cn.hutool.v7.http.server.servlet.JavaxServletResponse;
|
||||
import org.eclipse.jetty.server.Handler;
|
||||
import org.eclipse.jetty.server.Request;
|
||||
import org.eclipse.jetty.server.handler.AbstractHandler;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import org.eclipse.jetty.server.Response;
|
||||
import org.eclipse.jetty.util.Callback;
|
||||
|
||||
/**
|
||||
* Jetty9版本使用的Handler
|
||||
* Jetty版本使用的Handler
|
||||
*
|
||||
* @author Looly
|
||||
*/
|
||||
public class Jetty9Handler extends AbstractHandler {
|
||||
public class JettyHandler extends Handler.Abstract {
|
||||
|
||||
private final HttpHandler handler;
|
||||
|
||||
@@ -39,13 +36,13 @@ public class Jetty9Handler extends AbstractHandler {
|
||||
*
|
||||
* @param handler 处理器
|
||||
*/
|
||||
public Jetty9Handler(final HttpHandler handler) {
|
||||
public JettyHandler(final HttpHandler handler) {
|
||||
this.handler = handler;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(final String target, final Request baseRequest,
|
||||
final HttpServletRequest request, final HttpServletResponse response) {
|
||||
handler.handle(new JavaxServletRequest(request), new JavaxServletResponse(response));
|
||||
public boolean handle(Request request, Response response, Callback callback) {
|
||||
handler.handle(new JettyRequest(request), new JettyResponse(response));
|
||||
return true;
|
||||
}
|
||||
}
|
@@ -0,0 +1,61 @@
|
||||
package cn.hutool.v7.http.server.engine.jetty;
|
||||
|
||||
import cn.hutool.v7.http.server.handler.ServerRequest;
|
||||
import org.eclipse.jetty.http.HttpFields;
|
||||
import org.eclipse.jetty.io.Content;
|
||||
import org.eclipse.jetty.server.Request;
|
||||
|
||||
import java.io.InputStream;
|
||||
|
||||
/**
|
||||
* Jetty请求对象包装
|
||||
*
|
||||
* @author looly
|
||||
*/
|
||||
public class JettyRequest implements ServerRequest {
|
||||
|
||||
private final Request request;
|
||||
|
||||
/**
|
||||
* 构造
|
||||
*
|
||||
* @param request Jetty请求对象
|
||||
*/
|
||||
public JettyRequest(Request request) {
|
||||
this.request = request;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMethod() {
|
||||
return request.getMethod();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPath() {
|
||||
return Request.getPathInContext(request);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getQuery() {
|
||||
return request.getHttpURI().getQuery();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getHeader(String name) {
|
||||
return request.getHeaders().get(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取所有请求头
|
||||
*
|
||||
* @return 请求头
|
||||
*/
|
||||
public HttpFields getHeaders() {
|
||||
return request.getHeaders();
|
||||
}
|
||||
|
||||
@Override
|
||||
public InputStream getBodyStream() {
|
||||
return Content.Source.asInputStream(request);
|
||||
}
|
||||
}
|
@@ -0,0 +1,62 @@
|
||||
package cn.hutool.v7.http.server.engine.jetty;
|
||||
|
||||
import cn.hutool.v7.http.server.handler.ServerResponse;
|
||||
import org.eclipse.jetty.io.Content;
|
||||
import org.eclipse.jetty.server.Response;
|
||||
|
||||
import java.io.OutputStream;
|
||||
import java.nio.charset.Charset;
|
||||
|
||||
/**
|
||||
* Jetty响应对象
|
||||
*
|
||||
* @author looly
|
||||
*/
|
||||
public class JettyResponse implements ServerResponse {
|
||||
|
||||
private Charset charset;
|
||||
private final Response response;
|
||||
|
||||
/**
|
||||
* 构造
|
||||
*
|
||||
* @param response Jetty响应对象
|
||||
*/
|
||||
public JettyResponse(Response response) {
|
||||
this.response = response;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JettyResponse setStatus(int statusCode) {
|
||||
response.setStatus(statusCode);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JettyResponse setCharset(Charset charset) {
|
||||
this.charset = charset;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Charset getCharset() {
|
||||
return this.charset;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JettyResponse addHeader(String header, String value) {
|
||||
response.getHeaders().add(header, value);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JettyResponse setHeader(String header, String value) {
|
||||
response.getHeaders().put(header, value);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public OutputStream getOutputStream() {
|
||||
return Content.Sink.asOutputStream(response);
|
||||
}
|
||||
}
|
@@ -15,7 +15,7 @@
|
||||
*/
|
||||
|
||||
/**
|
||||
* Jetty9引擎实现
|
||||
* Jetty引擎实现
|
||||
*
|
||||
* @author Looly
|
||||
*/
|
||||
|
Reference in New Issue
Block a user