【问题标题】:Wildfly ignoring jackson annotations and not using @Provider classWildfly 忽略杰克逊注释而不使用 @Provider 类
【发布时间】:2016-08-03 22:43:43
【问题描述】:

我环顾四周,不认为这是其中任何一个的重复:

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;
  }

}

如果没有注释,我会在部署时看到构造函数中抛出的异常,但是当我向我的 REST 服务发出请求时,我看不到来自 getContext 方法的异常。

我在一个实体上有一个 @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 的单元测试,它可以正确序列化。

【问题讨论】:

    标签: java json annotations


    【解决方案1】:

    对于其他人,我想通了。问题是我的 pom 中有没有标记为“提供”范围的杰克逊罐子。这意味着我的 war 文件的 WEB-INF/lib 目录中有 jar。

    即使它们与 Wildfly 的 jar 版本完全相同(我使用与我正在使用的 WF 版本相同的版本属性),它们也无法正常工作。看起来 hashCode() 对于来自不同 jar 的相同注释是不同的,即使它们完全相同(校验和和所有内容)。

    因此,解决方案是在 maven 中将所有 Jackson 的依赖项标记为 provided

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-07
      • 2015-05-18
      • 1970-01-01
      • 2012-04-22
      • 2017-02-15
      • 1970-01-01
      • 2014-06-04
      相关资源
      最近更新 更多