SpringCloud学习中遇到的一些bug

bug

There was a problem with the instance info replicator

  • 错误原因:
    该服务尝试将自己作为客服端注册
  • 解决办法:
    在application.yml配置文件中,设置
# 注册Eureka服务
eureka:
  client:
    # Eureka服务注册中心会将自己作为客户端来尝试注册它自己,必須禁止
    register-with-eureka: false
    fetch-registry: false

实体类转化出错: disable SerializationFeature.FAIL_ON_EMPTY_BEANS

  • 错误原因:
    使用的框架是Spring Boot,处理完请求之后,返回数据之前,在POJO转化成JSON时,有些属性违背输出规则或者有些属性循环引用会造成无法输出。
  • 解决办法:
    在实体类上面加上注解
@JsonIgnoreProperties(value = { "hibernateLazyInitializer", "handler" })

This application has no explicit mapping for /error, so you are seeing this as a fallback.

  • 错误原因: 很可能是你Application启动类放的位置不对。要将Application放在最外层,也就是要包含所有子包。
  • 解决办法: 将Application放在最外层,也就是要包含所有子包。

message:Request method 'POST' not supported

There was an unexpected error (type=Internal Server Error, status=500).
status 405 reading UserFeignClient#getUser(User); content: {"timestamp":"2018-09-07T09:01:14.290+0000","status":405,"error":"Method Not Allowed","message":"Request method 'POST' not supported","path":"/feign-get-user"}

  • 错误原因:
    该请求不会成功,只要参数是复杂对象,即使指定了是GET方法,feign依然会以POST方法进行发送请求。可能是我没找到相应的注解或使用方法错误。

  • 解决办法:

    // 该请求不会成功,只要参数是复杂对象,即使指定了是GET方法,feign依然会以POST方法进行发送请求。可能是我没找到相应的注解或使用方法错误。
    @RequestMapping(method = RequestMethod.GET, value = "/feign-get-user")
    public User getUser(User user);
    
    //正确用法
    @RequestMapping(method = RequestMethod.GET, value = "/feign-get-user")
    public User getUser(@RequestParam("id") Long id, @RequestParam("username") String username, @RequestParam("age") String age);
}

Error creating bean with name 'eurekaAutoServiceRegistration'

org.springframework.beans.factory.BeanCreationNotAllowedException: Error creating bean with name 'eurekaAutoServiceRegistration': Singleton bean creation not allowed while singletons of this factory are in destruction (Do not request a bean from a BeanFactory in a destroy method implementation!)

  • 错误原因:
    • 同一个服务重复启了;
    • 或者是端口被其他应用占用了。
  • 解决办法:
    释放被占用的端口即可

Read timed out

  • 详细描述: com.sun.jersey.api.client.ClientHandlerException: java.net.SocketTimeoutException: Read timed out
  • 错误原因:
    应用刚启动,需要通过ribbon从eureka上拉取服务;需要将虚拟主机名转化为ip地址
  • 解决办法:
    这是比较正常的现象,只需要再次刷新就好了

解决第一次请求报超时异常的方案

Cannot execute request on any known server

  • 错误详细描述: com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server
  • 错误原因:
    Peer Awareness配置
# application.yml (Two Peer Aware Eureka Servers). 
---
spring:
  profiles: peer1
eureka:
  instance:
    hostname: peer1
  client:
    serviceUrl:
      defaultZone: http://peer2/eureka/

---
spring:
  profiles: peer2
eureka:
  instance:
    hostname: peer2
  client:
    serviceUrl:
      defaultZone: http://peer1/eureka/
  • 解决办法:
    修改C:\Windows\System32\drivers\etc路径下的hosts文件,在文末加入以下内容:
127.0.0.1 peer1 peer2 peer3

com.netflix.client.ClientException: Load balancer does not have available server for client: microservice-provider-user

  • 错误原因:
    消费者调用服务时无服务可用
  • 解决办法:
  1. 确定本机是否关闭防火墙
  2. 是否导入eureka的jar包
    <!-- 注册Eureka服务 -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
  1. 确定是否导入hystrix的jar包
    <!-- 配置hystrix所需依赖的包 -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
    </dependency>
  1. 确定配置文件服务前面是否有空格


Unable to connect to Command Metric Stream

  • 错误原因:
    配置文件不完整
  • 解决办法:
    ==Hystrix Metrics Stream==
    要启用Hystrix度量标准流,请在spring-boot-starter-actuator上包含依赖项,并设置==management.endpoints.web.exposure.include:hystrix.stream==。 这样做会将 /actuator/hystrix.stream公开为管理端点,如以下示例所示:
    • pom.xml
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
       
        </dependency>
    
    • application.yml
        # 配置Hystrix Metrics Stream
        management:
          endpoints:
            web:
              exposure:
                include: hystrix.stream
    

hystrix.stream一直是ping

  • 错误原因:
    • 因为没有请求任何东西,所以看不到内容;
    • 缺少配置监控的依赖
    • 配置环境不完善
  • 解决办法:
     <!-- Actuator是SpringBoot提供的对应用系统的自省和监控的集成功能,可以查看应用配置的详细信息;
        如果提示 Unable to connect to Command Metric Stream.则需要引入以下包!
         -->
     <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-actuator</artifactId>
     </dependency> 
    
    • 完善配置环境
     # 使用Hystrix Metrics Stream必备 
     management:
       endpoints: 
         web:
           exposure: 
             include: hystrix.stream   
    

turbine.stream一直是ping

  • 错误原因:
    • 因为没有请求任何东西,所以看不到内容;
    • 缺少配置监控的依赖
    • Eureka服务注册中心未将自己作为客户端来尝试注册它自己
    # 注册Eureka服务
    eureka:
      client:
        register-with-eureka: false
        fetch-registry: false
    
    • 缺少配置监控的依赖
  • 解决办法:
     <!-- Actuator是SpringBoot提供的对应用系统的自省和监控的集成功能,可以查看应用配置的详细信息;
        如果提示 Unable to connect to Command Metric Stream.则需要引入以下包!
         -->
     <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-actuator</artifactId>
     </dependency> 
    
    • Eureka服务注册中心未将自己作为客户端来尝试注册它自己
    # 注册Eureka服务
    eureka:
      client:
    #    register-with-eureka: false
    #    fetch-registry: false
    
    • 添加配置的依赖(作为客服端的都需要配置)
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency> 
    

Health Indicator访问无结果

  • 错误原因:
    • 未导入依赖包
    • 版本原因导致访问方式改变了
  • 解决办法:
    • 导入依赖包
     <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-actuator</artifactId>
     </dependency>
    
     {
         "_links": {
             "self": {
                 "href": "http://localhost:8030/actuator",
                 "templated": false
             },
             "health": {
                 "href": "http://localhost:8030/actuator/health",
                 "templated": false
             },
             "info": {
                 "href": "http://localhost:8030/actuator/info",
                 "templated": false
             }
         }
     }
    

Turbine监控多个服务,配置后,出现只监控到一部分服务情况

  • 错误原因:
    • 配置有问题
  • 解决办法:
    • application.xml配置如下:
    # 0、配置多个监控服务
    turbine:
      appConfig: microservice-consumer-goods-feign-with-hystrix,microservice-consumer-goods-ribbon-with-hystrix
      clusterNameExpression: "'default'"
    
    # 1、仅配置监控一个服务
    turbine:
      aggregator:
        clusterConfig: MICROSERVICE-CONSUMER-GOODS-RIBBON-WITH-HYSTRIX
      appConfig: microservice-consumer-goods-ribbon-with-hystrix
    
    • 各个微服务的Controller配置

      每个微服务均需要加上如下注解:
    //配置hystrix所需注解
    @EnableCircuitBreaker
    

"description":"No key was installed for encryption service","status":"NO_KEY"

  • 错误描述
{
    "description": "No key was installed for encryption service",
    "status": "NO_KEY"
}
encrypt: 
  key: foobar

如果是在application.yml中配置秘钥有可能读取不到,依然报该错误

  • 查看JCE提供者,和一些相应算法
import java.security.*;

public class JceInfo {
    public static void main(String[] args) {
        System.out.println("-------列出加密服务提供者-----");
        Provider[] pro = Security.getProviders();
        for (Provider p : pro) {
            System.out.println("Provider:" + p.getName() + " - version:" + p.getVersion());
            System.out.println(p.getInfo());
        }
        
        System.out.println();
        System.out.println("-------列出系统支持的 消息摘要算法:");
        for (String s : Security.getAlgorithms("MessageDigest")) {
            System.out.println(s);
        }
        
        System.out.println();
        System.out.println("-------列出系统支持的生成 公钥和 私钥对的算法:");
        for (String s : Security.getAlgorithms("KeyPairGenerator")) {
            System.out.println(s);
        }
    }
}
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容