【问题标题】:Jackson annotations ignored after deployment to JBOSS部署到 JBOSS 后忽略 Jackson 注释
【发布时间】:2013-12-19 14:08:35
【问题描述】:

我有一个使用两个 Jackson 注释的类:

@JsonIgnoreProperties(ignoreUnknown = true)
public class MyObject{

    @JsonProperty(value = "fooVal")
    private String foo;

    public MyObject(){}        

    public String getFoo() {
        return foo;
    }

    public void setFoo(String foo) {
        this.foo = foo;
    }
}

当我在测试用例中使用ObjectMapper 将收到的JSON 映射到本地环境中的MyObject 时,它可以正常工作,但是如果我将模块部署到我的JBOSS AS,所有注释都将被忽略,我不知道为什么。

我的pom.xml 有依赖:

<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
</dependency>

所以库被导入到部署中的 WAR 文件夹中。

为什么部署后会忽略注释?

【问题讨论】:

  • 可能是库冲突 - 如果您使用的是 JBoss 7,它已经将 Jackson(旧版本)作为 RestEasy 的一部分。
  • @Gimby 我试过在没有库的情况下重新部署战争,不幸的是行为没有改变..
  • @Gimbly 实际上我不得不在 jboss-deployment-structure 中排除它。非常感谢您指出正确的方法!

标签: java maven jboss jackson


【解决方案1】:

问题在于由于自动导入较旧版本的 Jackson 导致库冲突。 解决方案包括:

<exclusions>
        <module name="org.codehaus.jackson.jackson-core-asl" />
        <module name="org.codehaus.jackson.jackson-mapper-asl" />
</exclusions>

进入部署标签中的jboss-deployment-structure.xml

给其他开发者的重要提示: 使用新库时,请考虑您的应用程序服务器的 firstclass/lastclass(类加载顺序首选项)设置:WebSphereTomcatJBOSS

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-07
    • 1970-01-01
    • 1970-01-01
    • 2015-10-19
    • 2015-05-31
    • 2018-05-20
    相关资源
    最近更新 更多