Jersey @Context的Maven依赖项
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jersey @Context的Maven依赖项相关的知识,希望对你有一定的参考价值。
我试图从球衣HttpServletRequest
得到ContainerRequestFilter
,使用@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用于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
对象注入过滤器所需的正确球衣依赖性是什么?
谢谢
答案
注释@Context
是其中的一部分
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>2.0</version>
</dependency>
我仍然使用泽西版2.23.1和@Context
工作正常。最新版本是2.26,这可能是你应该开始的版本。
您可能正在寻找一个库来序列化和反序列化JSON:
<dependency>
<groupId>com.owlike</groupId>
<artifactId>genson</artifactId>
<version>1.4</version>
</dependency>
这些都是我的泽西岛依赖:
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
<version>2.23.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>2.23.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet-core</artifactId>
<version>2.23.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.ext</groupId>
<artifactId>jersey-declarative-linking</artifactId>
<version>2.23.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
<version>2.23.1</version>
</dependency>
以上是关于Jersey @Context的Maven依赖项的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Swagger 与 Maven + Java + Jersey +Tomcat 集成