Jetty 服务器 12 - 无法在处理程序方法中获取 HttpServletRequest 和 HttpServletResponse 对象

问题描述 投票:0回答:1

我们有遗留应用程序并使用 Jetty 服务器。现在尝试使用 Jakarta 将我们的应用程序升级到 Java 17。所以我们必须升级 Jakarta 12.0.x 以支持 java 17。 当请求到来时,我们将请求对象传递到当前代码中的自定义过滤器。

java 17 之前:

@Override
 public void handle(String target, Request baseRequest, HttpServletRequest hreq, HttpServletResponse  
                    hresp)throws IOException, ServletException {
   try {
         fc.doFilter(hreq, hresp);
         
       }catch (Exception e) { 

基本上 doFilter 方法传递 HttpServletRequest hreq、HttpServletResponse hresp 对象

但是新的Jetty服务器12.0.X,我们在handle方法中没有HttpServletRequest,HttpServletResponse对象,下面是方法签名。

Java 17 和 Jetty 12.0.x 之后

@Override
public boolean handle(Request request, Response response, Callback callback) throws Exception {

doFilter方法来自Jakarta,其签名是

void jakarta.servlet.FilterChain.doFilter(ServletRequest request, ServletResponse response) throws IOException, ServletException

您能否指导我如何将这些对象传递到雅加达过滤器

我尝试使用 Jetty org.eclipse.jetty.server.Request 对象来获取 HttpServletRequest/Reponse,但其中没有可用的方法

jetty embedded-jetty jetty-12
1个回答
0
投票

Jetty 12 核心没有 Servlet 要求。

Servlet仅存在于各个环境层中。

环境:

ee10
ee9
ee8

如果您想针对 Jetty 12 Core 中的

Handler
层进行编写,请查看编程指南和 jetty-examples 项目。

由于您显然想要 Servlet 过滤器之类的机制,因此您应该查看

Handler.Wrapper
Request.Wrapper
设施。

另请参阅

© www.soinside.com 2019 - 2024. All rights reserved.