【发布时间】:2019-04-29 08:53:48
【问题描述】:
我正在 Tomcat 7 中运行 Jersey 2.x 应用程序。我正在使用带有所有正确依赖项的 Jackson 2。
我用JerseyTest 编写了一个基本测试来检查我的API。我的杰克逊注释在那里工作得很好。但是,一旦我在 Tomcat 中部署它,我的 Jackson 注释都不起作用。
另一个有趣的事情是,当我在默认 Jersey ObjectMapper 上注册自定义反序列化器时
private static ObjectMapper createDefaultMapper() {
final ObjectMapper mapper = new ObjectMapper();
final SimpleModule module = new SimpleModule();
module.addDeserializer(MyEntity.class, new MyEntityDeserializer());
mapper.enable(SerializationFeature.INDENT_OUTPUT);
mapper.registerModule(module);
return mapper;
}
反序列化器在 Tomcat 中被拾取。只是注释不是。
我试过的注释是
@JsonCreator
@JsonDeserialize
@JsonSetter
我不太确定从哪里开始调试此问题。
【问题讨论】:
-
哪些注释不起作用,可以分享代码吗?
-
@user7294900 我已经更新了这个问题。我有一种感觉,我的杰克逊注释在 Tomcat 中都不起作用。他们与 JerseyTest 配合得很好
-
在使用这些注解时,您是否在每个字段前指定了@JsonProperty?
-
@sachinrai 仅适用于需要它的字段。我不是在滥用杰克逊,因为它在 Tomcat 之外工作,而是由于某种原因,在部署 webapp 时没有拾取注释。例如,当我手动创建它的实例时,我的反序列化器实际上被击中,如我的示例所示。但是使用注释它不是由Tomcat在运行时创建的
标签: java tomcat jackson jersey