Spring Cloud Edgware新特性之:解决Eureka中Jersey 1.x版本过旧的问题-不使用Jersey

Spring Cloud是当前炙手可热的微服务开发框架。它的功能强大,组件丰富,设计优雅。目前Spring Cloud还在不断发展之中。

Spring Cloud即将发布 SpringCloudEdgware 版本。该版本解决了不少Bug,新增了不少新特性,本系列博客将为大家详细阐述在Spring Cloud Edgware中新增的特性。

为了让描述更加的贴合实际,本文将结合笔者所在团队遇到的实际情况进行讲解。

背景

Eureka服务器与客户端之间默认使用 Jersey1.x 进行基于HTTP协议的交互。然而我们团队,需使用 docker-client (https://github.com/docker-java/docker-java) 。这货只支持 Jersey2.x ,而Jersey 1.x与2.x并不兼容。

寻求方案

于是,我们团队面临如下几种选择:

  • 使用Eureka提供的 eureka-client-jersey2 模块,即使用 Jersey2.x 来代替 Jersey1.x https://github.com/Netflix/eureka/tree/master/eureka-client-jersey2。然而,这种方式不够稳妥,原因是 eureka-client-jersey2 是由社区提供,并非由Eureka官方团队维护,并且已经很久不更新了。
  • 放弃使用 docker-client ,使用其他的Docker客户端,例如https://github.com/spotify/docker-client (该项目支持Jersey 1.x以及Jersey 2.x)。
  • 升级 SpringCloudNetflix 到1.4.x,即: SpringCloudEdgware 【笔者认为的最佳方案】。

本文探讨的就是在 SpringCloudEdgware 中Eureka的点点滴滴。

废弃Eureka Client的Jersey

SpringCloudEdgware 中,Jersey并非必选。可为Eureka Client禁用掉Jersey,转而使用我们想要的HTTP客户端,例如RestTemplate。只需将Jersey的包从依赖中删除,Spring Cloud就会自动配置一个基于 SpringRestTemplate 的传输客户端。操作如下:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka</artifactId>
    <exclusions>
        <exclusion>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-client</artifactId>
        </exclusion>
        <exclusion>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-core</artifactId>
        </exclusion>
        <exclusion>
            <groupId>com.sun.jersey.contribs</groupId>
            <artifactId>jersey-apache-client4</artifactId>
        </exclusion>
    </exclusions>
</dependency>

收益

简单的操作后,有两个好处:

  • 再也不用烦Jersery的版本冲突问题
  • 依赖减少了一些。

原理及代码

详见:https://github.com/spring-cloud/spring-cloud-netflix/issues/1849 。简单来说,就是Eureka提供了一个抽象,允许用户为Eureka Client定制自己的HTTP客户端,而不像老版本,强制使用Jersery。

原文发布于微信公众号 - A周立SpringCloud(gh_e6849e368b5f)

原文发表时间:2017-10-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java技术栈

Spring Cloud 多版本怎么选择?帮你解惑!

23230
来自专栏程序你好

Spring Boot 2.0 如约而至,升级与否?

12920
来自专栏软件开发

Java资源大全中文版(Awesome最新版)

Awesome系列的Java资源整理。awesome-java 就是akullpp发起维护的Java资源列表,内容包括:构建工具、数据库、框架、模板、安全、代码...

730120
来自专栏Java社区

spring是什么?它能够做什么?新手必看

19730
来自专栏张善友的专栏

POJO应用框架:Spring与EJB3.0的比较

关键词: Spring EJB 艾伯特.爱因斯坦曾经说过:“一切都应该尽可能地简单,但是不能更简单。”确实如此,简化一门理论的基本假设,使我们可以专注于真正关键...

27180
来自专栏编程

如何更深入地理解Java编程中的框架部分

在很多年以前,Java程序员做项目使用的是SSH框架。SSH框架一般指的是Struts、Spring、Hibernate,到后来Struts2代替了Struts...

21950
来自专栏Java技术栈

Spring Boot 2.1.0 已发布,7 个重大更新!

距离《重磅:Spring Boot 2.0 正式发布!》已经过去大半年了,而 Spring Boot 2.1.0 在 10 月底就发布了,我们来看下 Sprin...

12720
来自专栏向治洪

Spring Boot微服务架构入门

概述 还记得在10年毕业实习的时候,当时后台三大框架为主流的后台开发框架成软件行业的标杆,当时对于软件的认识也就是照猫画虎,对于为什么会有这么样的写法,以及这种...

254100
来自专栏Linyb极客之路

Java开发人员应该知道的前5个Spring Boot特性

通过使用Spring Boot Starter POM或入门依赖项功能,您只需在pom.xml中添加spring-boot-starter-web依赖项即可...

13720
来自专栏Java技术栈

你必须了解Spring的生态

Spring不止是提供了IOC、AOP的功能,还提供了大量的基于Spring的项目,拿来用就行了,用于一站式开发,大大降低了开发的难度。 下面列举下主要的一些S...

37790

扫码关注云+社区

领取腾讯云代金券