有几件事。首先,您不仅需要核心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-server
并jersey-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
。可以看出这里的供应商寻找一ContextResolver
对XmlMapper
,没有ObjectMapper
。