我们有一个运行在Apache TomEE上的JAX-RS应用程序。我们稍微自定义默认的Jettison提供程序,以更好地遵守JavaScript前端使用的JSON约定。 TomEE允许通过其文件resource.xml的做到这一点:使用GlassFish v4自定义JSON
<resources>
<Service id="jettison" class-name="org.apache.cxf.jaxrs.provider.json.JSONProvider">
serializeAsArray = true
dropRootElement = false
arrayKeys = members,roles
supportUnwrapped = true
writeXsiType = false
</Service>
</resources>
现在我们正在迁移到GlassFish v4.1的,而且我们注意到,JSON输出从我们曾在TomEE不同 - 从而彻底打破了前端。我正在寻找类似的机制来自定义GlassFish中的JSON编组器。事实上,我已经与泽西岛,MOXY,杰克逊,杰蒂森有点stuck。我们如何知道哪个JSON提供者实际使用?我们如何选择一个?我们如何定制行为?
该应用程序是纯JAX-RS,不直接使用任何JSON处理器,而是依靠对JAXB注释类的编组。任何非JavaEE依赖性的引入都是非常不可取的,因为应用程序旨在跨容器(TomEE,GlassFish,有朝一日WildFly)移植。与TomEE类似,配置文件方法更可取;程序化的方式也是可以接受的 - 但只有在可移植性得以保持的情况下才可以。
查找关于'jersey.config.server.disableMoxyJson'使我像一天。最后我得到了我的Gson提供者的工作。谢谢! – 2017-12-12 19:32:59