gpt4 book ai didi

soap - 如何创建向后兼容的 JAX-RS 和 JAX-WS API?

转载 作者:行者123 更新时间:2023-12-04 16:13:06 25 4
gpt4 key购买 nike

JAX-RS 和 JAX-WS 非常适合生成 API。但是,它们根本没有解决向后兼容性的问题。

为了避免在 API 引入新功能时破坏旧客户端,您基本上必须接受并提供与以前完全相同的输入和输出格式;许多 XML 和 JSON 解析器似乎很适合,如果他们发现一个没有映射到任何东西的字段,或者有错误的类型。

一些 JSON 库,例如 Jackson 和 Gson,提供了一个功能,您可以根据运行时设置为给定对象指定不同的输入/输出表示,这似乎是在许多情况下处理版本控制的合适方法。这使得可以通过注释添加和删除的字段来提供向后兼容性,以便它们仅根据客户端使用的 API 版本出现。

迄今为止,我发现 JAXB 和任何其他 XML 数据绑定(bind)库都没有很好地支持这个概念,更不用说能够为 JSON 和 XML 重用相同的注释。将它添加到 JAXB-RI 或 EclipseLink Moxy 似乎是可能的,但令人生畏。

版本控制的另一种方法似乎是对所有已更改的类进行版本控制,通常是在每次发布 API 时创建一个新包,并在新包中复制所有修改的 DTO、服务和资源类,以便所有类型信息针对绑定(bind)和调度系统进行了版本控制。这种方法对我来说似乎更费力。

我的问题是:您如何设计您的 Java API 提供程序以实现向后兼容性?什么有效,什么无效?

非常感谢有关该主题的案例研究或博客文章的链接;我做了一些谷歌搜索,但没有找到太多关于这个的讨论。

最佳答案

我是 EclipseLink MOXy 的技术主管,我对您的版本控制要求非常感兴趣。您可以通过我的博客与我联系:

  • http://bdoughan.blogspot.com/p/contact_01.html

  • MOXy 提供了一种将 JAXB 元数据表示为 XML 文件的方法。您可以利用它为同一对象模型创建多个映射:
  • http://wiki.eclipse.org/EclipseLink/Examples/MOXy/EclipseLink-OXM.XML
  • 关于soap - 如何创建向后兼容的 JAX-RS 和 JAX-WS API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4197528/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com