2016-08-03 2 views
0

я огляделся здесь и не думаю, что это дубликат любых из них:Wildfly игнорируя Джексон аннотации и не используя @Provider класса

using Jackson annotations in Wildfly

jackson annotations being ignored

Wildfly and Jackson @JsonIgnore annotation

Использование Wildfly 10 и развертывание войны со следующим классом:

@Provider 
public class JaxApplication implements ContextResolver<ObjectMapper> { 
    private final ObjectMapper mapper; 

    public JaxApplication() { 
    mapper = new ObjectMapper(); 
    mapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS); 
    //throw new RuntimeException("HERE"); 
    } 

    @Override 
    public ObjectMapper getContext(Class<?> type) { 
    throw new RuntimeException("HERE"); 
    //return mapper; 
    } 

} 

Я вижу исключение в конструкторе, брошенном при развертывании, если он не комментируется, но я не вижу его из метода getContext, когда я делаю запрос к моей службе REST.

У меня есть @JsonIgnore аннотацию на сущность и она не работает, и не является @JsonIdentityInfo аннотацию я использую

Этот класс выглядит следующим образом (импорт включен, чтобы проверить, я использую com.fasterxml. *)

import com.fasterxml.jackson.annotation.JsonIdentityInfo; 
import com.fasterxml.jackson.annotation.ObjectIdGenerators; 

import javax.persistence.*; 
import javax.validation.constraints.NotNull; 
import java.util.List; 

/** 
* Created by mb995a on 7/29/2016. 
*/ 
@Entity 
@JsonIdentityInfo(generator=ObjectIdGenerators.IntSequenceGenerator.class, property="@request_id", scope=Request.class) 

public class Request extends BaseEntity { 

Нужно ли мне что-то делать в моей конфигурации REST?

@ApplicationPath("api") 
public class RestApplication extends Application { 
    public RestApplication() { 
     super(); 
    } 
} 

Любые идеи?

Отредактировано для того, чтобы сказать: у меня также есть модульный тест, который использует ObjectMapper, и он сериализуется правильно.

ответ

1

Для кого-то еще, я понял это. Проблема состояла в том, что у меня были кувшины Джексона в моем помпе, которые не были отмечены как «предоставленные» рамки. Это означало, что у меня были банки в каталоге WEB-INF/lib моего военного файла.

Несмотря на то, что они представляют собой ту же самую версию банок Wildfly (я использую те же свойства версии, что и версия WF, которую я использую), они не работают должным образом. Похож, что hashCode() отличается тем же аннотацией от разных банок, даже если они точно такие же (контрольная сумма и все такое).

Итак, решение заключалось в том, чтобы отметить зависимости как provided в maven для всех материалов Jackson.

Смежные вопросы