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

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

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

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

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

背景

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

寻求方案

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

  • 使用Eureka提供的eureka-client-jersey2 模块,即使用Jersey 2.x 来代替Jersey 1.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)。
  • 升级Spring Cloud Netflix 到1.4.x,即:Spring Cloud Edgware 【笔者认为的最佳方案】。

本文探讨的就是在Spring Cloud Edgware 中Eureka的点点滴滴。

废弃Eureka Client的Jersey

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

<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>
AI 代码解读

收益

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

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

原理及代码

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

本文链接: http://www.itmuch.com/spring-cloud/edgware-new-eureka-jersey1/
**版权声明: **本博客由周立创作,采用 CC BY 3.0 CN 许可协议。可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。

目录
打赏
0
0
0
0
29
分享
相关文章
Spring Cloud是什么及基本特性都有哪些?
Spring Cloud 是用于构建健壮云应用的框架,包含多个子项目。其核心组件如Eureka(服务注册与发现)、Hystrix(熔断器)、Ribbon(负载均衡)等,帮助开发者快速实现微服务架构。Spring Cloud 提供了服务注册与发现、分布式配置、路由、断路器等功能,简化了微服务开发与管理。本文将重点介绍服务注册与发现及分布式配置两大特性。
SpringBoot是如何简化Spring开发的,以及SpringBoot的特性以及源码分析
Spring Boot 通过简化配置、自动配置和嵌入式服务器等特性,大大简化了 Spring 应用的开发过程。它通过提供一系列 `starter` 依赖和开箱即用的默认配置,使开发者能够更专注于业务逻辑而非繁琐的配置。Spring Boot 的自动配置机制和强大的 Actuator 功能进一步提升了开发效率和应用的可维护性。通过对其源码的分析,可以更深入地理解其内部工作机制,从而更好地利用其特性进行开发。
53 6
【SpringCloud Alibaba系列】Dubbo高级特性篇
本章我们介绍Dubbo的常用高级特性,包括序列化、地址缓存、超时与重试机制、多版本、负载均衡。集群容错、服务降级等。
【SpringCloud Alibaba系列】Dubbo高级特性篇
如何将Spring Boot + RabbitMQ应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot + RabbitMQ应用程序部署到Pivotal Cloud Foundry (PCF)
54 6
如何将Spring Boot + MySQL应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot + MySQL应用程序部署到Pivotal Cloud Foundry (PCF)
90 5
|
3月前
|
如何将Spring Boot应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot应用程序部署到Pivotal Cloud Foundry (PCF)
66 5
学习Spring框架特性及jiar包下载
Spring 5作为最新版本,更新了JDK基线至8,修订了核心框架,增强了反射和接口功能,支持响应式编程及Kotlin语言,引入了函数式Web框架,并提升了测试功能。Spring框架可在其官网下载,包括文档、jar包和XML Schema文档,适用于Java SE和Java EE项目。
55 0
|
5月前
|
Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐
本文通过在线图书管理系统案例,详细介绍如何使用Spring Boot构建RESTful API。从项目基础环境搭建、实体类与数据访问层定义,到业务逻辑实现和控制器编写,逐步展示了Spring Boot的简洁配置和强大功能。最后,通过Postman测试API,并介绍了如何添加安全性和异常处理,确保API的稳定性和安全性。
89 0
|
5月前
|
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
89 4
idea创建不了spring2.X版本,无法使用JDK8,最低支持JDK17 , 如何用idea创建spring2.X版本,使用JDK8解决方案
本文提供了解决方案,如何在IDEA中创建Spring 2.X版本的项目并使用JDK8,尽管Spring 2.X已停止维护且IDEA不再直接支持,通过修改pom.xml或使用阿里云的国内源来创建项目。
249 0
idea创建不了spring2.X版本,无法使用JDK8,最低支持JDK17 , 如何用idea创建spring2.X版本,使用JDK8解决方案
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等