【发布时间】:2014-01-06 18:08:34
【问题描述】:
我目前有一个项目,它使用 jackson faster xml 使用自定义序列化器和反序列化器将 POJO 序列化/反序列化为 Json。据我了解,ObjectMapper 在创建和配置后是线程安全的。但是,我注意到在使用 JMeter 运行测试时偶尔会发生以下情况 -
- 线程 1 进入 CustomerSerializer 开始序列化
- 线程2进入CustomSerializer,中断线程1,从头到尾开始序列化
- 线程 1 恢复,最后被序列化的东西不见了
似乎当第二个线程进入时 JsonGenerator 实例正在被重置——这肯定不应该发生吗?我检查了几个站点和线程,看看是否有我需要设置的设置或功能,但据我了解 ObjectMapper 重用 JsonGenerator 实例,这可能是问题吗?
以下是来自我的自定义序列化程序的 sn-p...
@Override
public final void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
jsonGenerator.writeStartObject();
... Code here ....
jsonGenerator.writeEndObject();
closeJsonGenerator(jsonGenerator);
}
以及它的使用示例
SimpleModule sm = new SimpleModule();
sm.addSerializer(new myCustomSerializer());
new ObjectMapper().registerModule(sm)
.writeValue(new myObject());
【问题讨论】:
-
请告诉我们你是如何使用
ObjectMapper和JsonGenerator的。 -
添加了 sn-p 的代码