Jersey 1.x将我的序列化空字段解释为字符串,其值为“null”。我该如何防止这种情况?

时间:2014-02-11 17:46:00

标签: java jaxb jersey jackson

这是一个非常讨厌的错误。这是正在发生的事情:当我运行客户端到服务器测试时,我的测试都可以正常工作。当我使用相同的源代码查询linux服务器时,它会失败。

它只发生在linux上(也许是mac,我还没有检查过)。我在Windows 7上无法重现这一点。但是,这可能是一个红鲱鱼。另一个不同之处在于,我正在逃离一只爆炸的耳朵,而失败的服务器正在从一个打包的耳朵里跑出来。如果这是罪魁祸首,那可能是类路径问题。

这与服务器有关。如果我更改我的客户端代码来调用linux服务器,它将失败。对我来说,排除了客户的责任。

我在服务器上设置了一个断点来比较输入,令我惊讶的是,实体的内容看起来非常不同。我的工作服务器使对象看起来像这样:

enter image description here

当我在linux服务器上设置断点时,它看起来像这样:

enter image description here

注意第二个是如何填充值为“null”和空对象的字符串。可能是什么导致了这个?我正在使用Jersey 1.x和Jackson 2.0以及JAXB。但这是一个巨大的项目,可能在类路径中有这些jar的旧版本。我甚至不确定在哪里怀疑这个错误可能来自。

1 个答案:

答案 0 :(得分:0)

我发现其原因实际上是类路径问题。与其他人相比,我使用的是不同的玻璃鱼。其他人的玻璃鱼在“glassfish / lib”下有额外的库:

jackson-asl-0.9.4.jar
jersey-bundle-1.0.3.1.jar
jsr311-api-1.0.jar

一旦我删除了这3个库,我的代码在所有地方都能正常工作。我一次删除了所有3个,所以我不确定它们是否都需要删除。但至少其中一个罐子是负责任的。