首页 > 解决方案 > Jersey 过滤器发生在 Jetty url 重写处理程序之前

问题描述

我正在使用 Jetty 重写处理程序将 /recommendation/api/movies 之类的 url 重写为 /movies。

protected static JettyServerCustomizer jettyRewriteHandlerCustomizer() {
        return server -> {
            RewriteHandler rewrite = new RewriteHandler();
            rewrite.setRewriteRequestURI(true);
            rewrite.setRewritePathInfo(false);
            rewrite.setOriginalPathAttribute("originalPath");

            RewritePatternRule recommendationApiToNone = new RewritePatternRule();
            recommendationApiToNone.setPattern("/recommendation/api/*");
            recommendationApiToNone.setReplacement("/");
            rewrite.addRule(recommendationApiToNone);

            server.insertHandler(rewrite);
        };
    }

而且我还将 Jersey 配置为过滤器,以便提供招摇的静态内容,例如 index.html。

spring.jersey.type=filter

但是,这样看来,请求会在没有被重写的情况下先命中球衣过滤器,从而导致 404 资源未找到。

有没有办法让重写处理程序出现在 Jersey 过滤器之前?

标签: javajerseyswaggerjetty

解决方案


我的错。我包含了依赖项 spring-boot-starter-web ,但没有排除其中的默认 tomcat 服务器。所以码头服务器没有启动,无法重写URL。解决。


推荐阅读