我们有遗留应用程序并使用 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 12 核心没有 Servlet 要求。
Servlet仅存在于各个环境层中。
环境:
ee10
、ee9
和ee8
。
如果您想针对 Jetty 12 Core 中的
Handler
层进行编写,请查看编程指南和 jetty-examples 项目。
由于您显然想要 Servlet 过滤器之类的机制,因此您应该查看
Handler.Wrapper
和 Request.Wrapper
设施。
另请参阅