2016-09-29 6 views
0

Я использую JBoss 6.x EAP с RestEasy.В том числе разворачивание api вызывает конфликты в jaxb provider под JBoss EAP

Когда я пытаюсь включить swagger.io 1.5.0 в свое веб-приложение и попытаюсь позвонить с внешним клиентом внешнего трикотажа, я замечаю, что он дает мне ошибку, потому что запрос тела не хорошо разбирается из-за игнорирования @XMLElement (name = "some_value") во время json-преобразования.

Это, вероятно, связано с jagb-библиотекой swagger, которая переопределяет библиотеки 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 для сопоставления объектов?

ответ

0

Наконец решается с помощью раствора при условии here

Просто добавьте этот набор исключений на 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>