首页 文章

在JBoss EAP下包含swagger api导致jaxb提供程序中的冲突

提问于
浏览
0

我在RestEasy中使用JBoss 6.x EAP .

当我尝试在我的Web应用程序中包含swagger.io 1.5.0并尝试使用外部泽西休息客户端进行调用时,我注意到它给了我错误,因为由于忽略了@XMLElement(名称而未正确解析正文请求) =“some_value”)在json转换期间 .

这可能是由于swagger jaxb库覆盖了JBoss提供的库 .

这是外部休息客户端的一部分代码

// requestObject is a pojo with JAXB annotations
// When using swagger, the field @XmlElement name is ignored, therefore the object is unmashaled with myName instead of my_name as expected
// @XmlElement(name = "my_name"))
// String myName

ClientResponse response;
try {
    response = client.resource(requestURI).queryParams(queryParams)
            .type(MediaType.APPLICATION_JSON)
            .accept(MediaType.APPLICATION_JSON)
            .post(ClientResponse.class, requestObject);

我试图包含最新版本的xml提供程序,如下所示:

<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-xml</artifactId>
    <version>2.8.3</version>
</dependency>

但没有变化 .

关于如何使用原始jackson / jaxb提供程序进行对象映射的任何建议?

1 回答

  • 0

    最后通过使用here提供的解决方案解决

    只需在swagger库的dependencyManagement上添加这组排除项

    <exclusion>
        <groupId>com.fasterxml.jackson.jaxrs</groupId>
        <artifactId>jackson-jaxrs-json-provider</artifactId>
    </exclusion>
    <exclusion>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-client</artifactId>
    </exclusion>
    <exclusion>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-core</artifactId>
    </exclusion>
    <exclusion>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-server</artifactId>
    </exclusion>
    

相关问题