如何从Jersey 1.0迁移到Jersey 2.0?

Dan*_*lan 22 jersey maven glassfish-2.x jersey-1.0 jersey-2.0

我正在尝试升级到Jersey 2.0并且我遇到了很多麻烦,因为泽西岛的groupIds和artifactIds已经完全改变了,我在Jersey文档中找不到迁移计划.

这是我的pom.xml以前看起来的样子,并编译好了:

        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-server</artifactId>
            <version>1.17</version>
        </dependency>
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-servlet</artifactId>
            <version>1.17</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-server-linking</artifactId>
            <version>1.17.1</version>
        </dependency>
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-client</artifactId>
            <version>1.17.1</version>
        </dependency>
Run Code Online (Sandbox Code Playgroud)

这些应该改成什么? 这个无关的StackOverflow问题有点帮助,但我很难找到@Ref注释移动到的地方.


更新

  1. 它似乎@Ref不再存在,或者至少在文档中没有提到它.现在你使用了UriBuilder.
  2. 我在文档中找到了一个非常有用的部分来回答我的maven问题.
  3. HTTPBasicAuthFilter已更名为HttpBasicAuthFilter.注意大写.
  4. Client client = Client.create(); 已经成为 Client client = ClientBuilder.newClient();
  5. 这个:

        String json = client
            .resource(getBaseUrl() + url)
            .accept(MediaType.APPLICATION_JSON_TYPE)
            .get(String.class);
    
    Run Code Online (Sandbox Code Playgroud)

    已经成为

    String json = client
            .target(getBaseUrl())
            .path(url)
            .request(MediaType.APPLICATION_JSON_TYPE)
            .get(String.class);
    
    Run Code Online (Sandbox Code Playgroud)

Gil*_*ili 11

你没有.

Jersey 2.0缺少Jersey 1.0的许多功能.与提交者告诉你的相反,有些事情现在很难实现(例如Guice,Spring集成).事情似乎在表面上起作用,但是一旦深入挖掘,你会发现许多功能仍然存在.

许多1.x插件在2.x中不存在,主要是因为上述破损.

鉴于此,我建议在可预见的未来暂停泽西2.x. 希望提交者能够在来年清理它.

  • @Andrew我相信大多数缺失的功能最终被添加到2.x但是迁移现有代码仍然非常痛苦.此外,Guice和Spring集成仍然从根本上被打破(根据当前设计无法正确实施).我最大的2.x牛肉是它背后的团队忽略了用户的反馈(然后攻击那些称呼它们的用户).我使用和为Jersey 1.x提供插件的主要原因是因为强大的开发人员/社区支持.当甲骨文收购Sun时,他们取代了团队,一切都走下坡路. (5认同)
  • @吉利你仍然有这种感觉吗?从您提出此建议已经过去了两年,我想知道您在Jersey 1.x-&gt; 2.x迁移中仍然发现哪些问题。 (2认同)

Svi*_*len 8

我不得不说颈部疼痛.我们目前正在深入迁移相对较大的3年以上的客户端服务器项目,男孩我想咬掉我的脖子.希望我们正处于斗争的最后阶段......虽然有一份移民指南确实无论如何都不全面.

  • UniformInterfaceException(以及其他)已不复存在.

相反,它被WebApplication异常和后继替换.在迁移指南中没有关于这一点,这非常重要.

  • JSON支持

迁移指南说:

JSON支持在Jersey 2.x中经历了一些变化.开发人员最明显的区别在于初始化和配置.

在Jersey 1.x中,JAXB/JSON支持在jersey-json模块中实现为一组MessageBodyReaders和MessageWriters.在内部,有几种JSON到Object映射的实现,从Jersey自己的自定义解决方案到第三方提供商,如Jackson或Jettison.JSON支持的配置集中在JSONConfiguration和JSONJAXBContext类中.

大.如果你选择了"泽西岛自己的定制解决方案"(我们之所以做了什么)怎么办?在球衣2中没有其他选择.我尝试使用Jettison,Jackson和Moxy提供商生成相同的JSON格式.我没有成功.作为参考,这里我没有回答的问题:Jersey 2 JSON Jettison展开根元素


Jus*_*ery 7

请参阅Jersey文档中的1.x到2.0迁移指南.

  • 这很有帮助,但我不会说完全全面.EG:没有提到`@ Ref`以及它去了哪里.没有提到迁移maven poms等. (4认同)