您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

无法获取jersey 2应用程序以使用自定义杰克逊XmlMapper

无法获取jersey 2应用程序以使用自定义杰克逊XmlMapper

有几件事。首先,您不仅需要核心Jackson xml依赖项,还需要实际的jaxrs提供程序

<dependency>
    <groupId>com.fasterxml.jackson.jaxrs</groupId>
    <artifactId>jackson-jaxrs-xml-provider</artifactId>
    <version>${jackson2.version}</version>
</dependency>

然后,您应该排除JAXB提供程序,这是Jersey所使用的认提供程序。(我在测试时保留它没有问题,但是如果您不打算使用它,我将排除它)。它是由jersey- server插入的,因此您应明确声明jersey-serverjersey-media-jaxb从中排除

<dependency>
    <groupId>org.glassfish.jersey.core</groupId>
    <artifactId>jersey-server</artifactId>
    <version>${jersey2.version}</version>
    <exclusions>
        <exclusion>
            <groupId>org.glassfish.jersey.media</groupId>
            <artifactId>jersey-media-jaxb</artifactId>
        </exclusion>
    </exclusions>
</dependency>

然后,您将需要注册JacksonJaxbXMLProvider(或JacksonXMLProvider不需要或计划使用JAXB批注的)。

public CCRestResources() {
    register(JacksonFeature.class);
    register(JacksonJaxbXMLProvider.class);
    packages("com.cc.rest.jersey");
}

最后,您需要将参数ContextResolver化为XmlMapper类型,而不是ObjectMapper。可以看出这里的供应商寻找一ContextResolverXmlMapper,没有ObjectMapper

其他 2022/1/1 18:31:25 有532人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶