部署到 JBOSS 后忽略 Jackson 注释

Dro*_*out 1 java jboss jackson maven

我有一个使用两个 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

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

我的pom.xml有依赖性:

<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)

因此,该库被导入到部署中的 WAR 文件夹中。

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

Dro*_*out 5

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

<exclusions>
        <module name="org.codehaus.jackson.jackson-core-asl" />
        <module name="org.codehaus.jackson.jackson-mapper-asl" />
</exclusions>
Run Code Online (Sandbox Code Playgroud)

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

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