我试图从 ContainerRequestFilter
得到 HttpServletRequest
,使用 @Context
如下:
import javax.ws.rs.core.Context;
import javax.ws.rs.ext.Provider;
@Provider
public class MyFilter implements ContainerRequestFilter {
@Context
protected HttpServletRequest httpRequest;
@Override
public ContainerRequest filter(ContainerRequest containerRequest) {
// logic ...
}
}
在传入请求时调用过滤器,但 httpRequest
始终为null .
目前我正在使用版本1.19.3 for jersey-server
和 jersey-json
. 我试图转移到更高版本的球衣,看看这是否解决了这个问题 . 已将 jersey-server
版本更改为2.7,但是没有相应版本的 jersey-json
. 相反,我引入了 jersey-media-json-jackson
版本2.8的依赖关系,如下所示:
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
<version>2.7</version>
<exclusions> <exclusion>
<artifactId>asm</artifactId>
<groupId>asm</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.8</version>
</dependency>
但是,这会引发以下构建错误(使用 jersey-json
版本1.19.3时相同):
Exception in thread "main" java.lang.IncompatibleClassChangeError: Implementing class
@Context
成功将 HttpServletRequest
对象注入过滤器所需的正确球衣依赖性是什么?
谢谢
1 回答
注释
@Context
是其中的一部分我仍在使用Jersey版本2.23.1和
@Context
工作正常 . 最新版本是2.26,这可能是你应该开始的版本 .您可能正在寻找一个库来序列化和反序列化JSON:
这些都是我的 Jersey 依赖: