You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tomcat 8部署WebService时@JsonIgnore注解失效问题求助

解决Tomcat8(Tomee 1.7.3)中@JsonIgnore注解不生效的问题

哎,这个问题我之前在Tomee 1.x环境里踩过坑!@JsonIgnore不生效十有八九是容器自带的Jackson和你引入的版本冲突了,或者WebService压根没用到Jackson来序列化。给你几个排查和解决的方向:

  • 排查容器Jackson版本冲突
    Tomee 1.7.3本身自带了Jackson相关依赖,而且因为你把apache-tomee设为provided scope,容器启动时会优先加载自带的Jar包,导致你引入的2.8.11版本根本没被用到。你可以去Tomcat/Tomee的lib目录下找找jackson-core*.jar、jackson-databind*.jar这些文件,看看版本是不是和你引入的不一致。

  • 排除Tomee依赖中的Jackson
    在你的pom.xml里给apache-tomee依赖添加排除规则,把它自带的Jackson相关包都排除掉,这样容器就会使用你引入的版本了:

    <dependency>
        <groupId>org.apache.openejb</groupId>
        <artifactId>apache-tomee</artifactId>
        <version>1.7.3</version>
        <scope>provided</scope>
        <exclusions>
            <exclusion>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-annotations</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    
  • 确保Jackson核心包版本一致
    Jackson的三个核心包(jackson-core、jackson-databind、jackson-annotations)必须版本统一,否则很容易出问题。你现在只加了jackson-databind,建议把另外两个也补上:

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>2.8.11</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.8.11</version>
    </dependency>
    
  • 检查WebService的序列化方式
    如果你的WebService是基于JAX-WS实现的,默认可能用的是JAXB而非Jackson来序列化对象,这时候@JsonIgnore自然不会生效。你需要配置WebService使用Jackson作为消息处理器:

    1. 先引入Jackson的JAX-RS provider依赖:
      <dependency>
          <groupId>com.fasterxml.jackson.jaxrs</groupId>
          <artifactId>jackson-jaxrs-json-provider</artifactId>
          <version>2.8.11</version>
      </dependency>
      
    2. 在你的WebService类上添加@Provider注解,或者在web.xml中配置这个Provider,让WebService使用Jackson来处理JSON序列化。
  • 确认注解包导入正确
    一定要确保你用的是com.fasterxml.jackson.annotation.JsonIgnore,而不是旧版本Jackson(org.codehaus.jackson)的同名注解。导错包是最容易忽略的小问题,检查一下你的import语句!

内容的提问来源于stack exchange,提问作者Giles

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:00:34