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>
|
<httpclient5.version>5.4.1</httpclient5.version>
|
||||||
<httpclient4.version>4.5.14</httpclient4.version>
|
<httpclient4.version>4.5.14</httpclient4.version>
|
||||||
<okhttp.version>4.12.0</okhttp.version>
|
<okhttp.version>4.12.0</okhttp.version>
|
||||||
<!-- 固定 2.2.x支持到JDK8 -->
|
<undertow.version>2.3.18.Final</undertow.version>
|
||||||
<undertow.version>2.2.36.Final</undertow.version>
|
<jetty.version>12.0.19</jetty.version>
|
||||||
<!-- 固定 9.x支持到JDK8 -->
|
|
||||||
<jetty.version>9.4.56.v20240826</jetty.version>
|
|
||||||
<!-- 固定 9.x支持到JDK8 -->
|
<!-- 固定 9.x支持到JDK8 -->
|
||||||
<tomcat.version>9.0.97</tomcat.version>
|
<tomcat.version>9.0.97</tomcat.version>
|
||||||
<smartboot.version>1.4.3</smartboot.version>
|
<smartboot.version>1.4.3</smartboot.version>
|
||||||
@@ -85,13 +83,6 @@
|
|||||||
<version>5.0.0</version>
|
<version>5.0.0</version>
|
||||||
<optional>true</optional>
|
<optional>true</optional>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>javax.servlet</groupId>
|
|
||||||
<artifactId>javax.servlet-api</artifactId>
|
|
||||||
<version>4.0.1</version>
|
|
||||||
<scope>provided</scope>
|
|
||||||
<optional>true</optional>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- 第三方HTTP客户端库 -->
|
<!-- 第三方HTTP客户端库 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
|
@@ -36,9 +36,6 @@ import javax.net.ssl.SSLContext;
|
|||||||
public class JettyEngine extends AbstractServerEngine {
|
public class JettyEngine extends AbstractServerEngine {
|
||||||
|
|
||||||
private Server server;
|
private Server server;
|
||||||
/**
|
|
||||||
* 由于Jetty9和以上版本中接口实现不同,此处根据不同版本做兼容自定义
|
|
||||||
*/
|
|
||||||
private Handler jettyHandler;
|
private Handler jettyHandler;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -112,7 +109,7 @@ public class JettyEngine extends AbstractServerEngine {
|
|||||||
final Server server = new Server(threadPool);
|
final Server server = new Server(threadPool);
|
||||||
server.addConnector(createConnector(server));
|
server.addConnector(createConnector(server));
|
||||||
server.setHandler(ObjUtil.defaultIfNull(this.jettyHandler,
|
server.setHandler(ObjUtil.defaultIfNull(this.jettyHandler,
|
||||||
() -> new Jetty9Handler(this.handler)));
|
() -> new JettyHandler(this.handler)));
|
||||||
this.server = server;
|
this.server = server;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -17,20 +17,17 @@
|
|||||||
package cn.hutool.v7.http.server.engine.jetty;
|
package cn.hutool.v7.http.server.engine.jetty;
|
||||||
|
|
||||||
import cn.hutool.v7.http.server.handler.HttpHandler;
|
import cn.hutool.v7.http.server.handler.HttpHandler;
|
||||||
import cn.hutool.v7.http.server.servlet.JavaxServletRequest;
|
import org.eclipse.jetty.server.Handler;
|
||||||
import cn.hutool.v7.http.server.servlet.JavaxServletResponse;
|
|
||||||
import org.eclipse.jetty.server.Request;
|
import org.eclipse.jetty.server.Request;
|
||||||
import org.eclipse.jetty.server.handler.AbstractHandler;
|
import org.eclipse.jetty.server.Response;
|
||||||
|
import org.eclipse.jetty.util.Callback;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Jetty9版本使用的Handler
|
* Jetty版本使用的Handler
|
||||||
*
|
*
|
||||||
* @author Looly
|
* @author Looly
|
||||||
*/
|
*/
|
||||||
public class Jetty9Handler extends AbstractHandler {
|
public class JettyHandler extends Handler.Abstract {
|
||||||
|
|
||||||
private final HttpHandler handler;
|
private final HttpHandler handler;
|
||||||
|
|
||||||
@@ -39,13 +36,13 @@ public class Jetty9Handler extends AbstractHandler {
|
|||||||
*
|
*
|
||||||
* @param handler 处理器
|
* @param handler 处理器
|
||||||
*/
|
*/
|
||||||
public Jetty9Handler(final HttpHandler handler) {
|
public JettyHandler(final HttpHandler handler) {
|
||||||
this.handler = handler;
|
this.handler = handler;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handle(final String target, final Request baseRequest,
|
public boolean handle(Request request, Response response, Callback callback) {
|
||||||
final HttpServletRequest request, final HttpServletResponse response) {
|
handler.handle(new JettyRequest(request), new JettyResponse(response));
|
||||||
handler.handle(new JavaxServletRequest(request), new JavaxServletResponse(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
|
* @author Looly
|
||||||
*/
|
*/
|
||||||
|
Reference in New Issue
Block a user