首页 文章

Jersey @Context的Maven依赖项

提问于
浏览
1

我试图从 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-serverjersey-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 回答

  • 0

    注释 @Context 是其中的一部分

    <dependency>
       <groupId>javax.ws.rs</groupId>
       <artifactId>javax.ws.rs-api</artifactId>
       <version>2.0</version>
    </dependency>
    

    我仍在使用Jersey版本2.23.1和 @Context 工作正常 . 最新版本是2.26,这可能是你应该开始的版本 .

    您可能正在寻找一个库来序列化和反序列化JSON:

    <dependency>
        <groupId>com.owlike</groupId>
        <artifactId>genson</artifactId>
        <version>1.4</version>
    </dependency>
    

    这些都是我的 Jersey 依赖:

    <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>
    

相关问题