跳到主要内容

Jersey

DeepSeek V3 中英对照 Jersey

使用 Spring Security 保护 Jersey 端点

Spring Security 可以用于保护基于 Jersey 的 Web 应用程序,其方式与保护基于 Spring MVC 的 Web 应用程序大致相同。然而,如果你想在 Jersey 中使用 Spring Security 的方法级安全控制,必须将 Jersey 配置为使用 setStatus(int) 而不是 sendError(int)。这样可以防止 Jersey 在 Spring Security 有机会向客户端报告认证或授权失败之前提交响应。

jersey.config.server.response.setStatusOverSendError 属性必须在应用程序的 ResourceConfig bean 上设置为 true,如下例所示:

import java.util.Collections;

import org.glassfish.jersey.server.ResourceConfig;

import org.springframework.stereotype.Component;

@Component
public class JerseySetStatusOverSendErrorConfig extends ResourceConfig {

public JerseySetStatusOverSendErrorConfig() {
register(Endpoint.class);
setProperties(Collections.singletonMap("jersey.config.server.response.setStatusOverSendError", true));
}

}
java

使用 Jersey 与另一个 Web 框架一起工作

为了在使用 Jersey 的同时与其他 Web 框架(如 Spring MVC)共存,需要进行配置,以便让其他框架处理 Jersey 无法处理的请求。首先,通过将 spring.jersey.type 应用程序属性配置为 filter,将 Jersey 配置为使用过滤器而不是 Servlet。其次,配置你的 ResourceConfig 以转发本应导致 404 的请求,如下例所示。

import org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.servlet.ServletProperties;

import org.springframework.stereotype.Component;

@Component
public class JerseyConfig extends ResourceConfig {

public JerseyConfig() {
register(Endpoint.class);
property(ServletProperties.FILTER_FORWARD_ON_404, true);
}

}
java