我正在使用 Jersey v1.9.1 开发 RESTful Web 服务。一些方法返回 JSON。当我想调试我的应用程序时,我从一个 grizzly 服务器开始,否则为了生产,我构建一个 war 文件并将其放置在 TomCat v7 安装中。我的项目都是 Maven2 项目。
现在,我注意到对于返回 的方法List<CustomObj>
,其中CustomObj
有适当的 JAXB 注释,即@XmlRootElement(name="CustomObj")
所有相关成员的 getter/setter:
- 使用grizzly,我得到类似的东西
{"CustomObj":[{<fields-of-customObj>},{<fields-of-customObj>},{<fields-of-customObj>}]}
(当列表有 3 个元素时)。用 GSON 解析它可以正常工作。 - 但是,使用TomCat,我得到了:
[{<fields-of-customObj>},{<fields-of-customObj>},{<fields-of-customObj>}]
-> 如您所见,“根”以某种方式丢失了
我的印象是该jersey-json
模块(我包含在我的 Maven2 依赖项中)根本没有在 TomCat 中使用,即使它们应该被使用(它们肯定会在 Grizzly 中使用)。此外,按照此处所述创建我自己@Provider
的 a仅适用于 grizzly,在 TomCat 中永远不会调用该方法。ContextResolver<JAXBContext>
getContext()
TomCat 有什么需要考虑的吗?
干杯!