使用服务,eureka和 zuul,在使用postman测试zuul网关来访问服务的url地址时报错:
前提是服务和zuul已经启动并且在eureka 中注册,并不是启动报错,其他情况请绕道!!!。
配置可参考zuul配置这篇
zuul使用问题
1. 用最新的springcloud,最新的不支持zuul,没有Method了。会报以下错误。
java.lang.NoSuchMethodError: org.springframework.boot.web.servlet.error.Erro
建议换版本!
2. 不用最新的,用2020以上版本springcloud。能够使用zuul包,并能注册到eureka ,但是http://localhost:8888/actuator 服务访问不了,500内部服务错误。
再用postman测试转发服务接口时也报错。
报错如下:
com.netflix.zuul.exception.ZuulException: Forwarding error
Caused by: com.netflix.client.ClientException: Load balancer does not have available server for client:
- 情况1:zuul配置
zuul:
routes:
app:
path: /app/**
#strip-prefix: false
#url: http://localhost:8080/ #url方式
serviceId: service-cl #对应项目的配置的spring.application.name
自认为配置没有问题,网上的各种方法都试了,还是报错,
3.最后改为2020.04版本以下的springcloud,其他配置不动。
<!-- Inherit defaults from Spring Boot -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.12.RELEASE</version>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR12</spring-cloud.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
结果测试成功!
4. 得出结论:版本问题!要练习zuul建议选Hoxton及以下版本,不要纠结,浪费宝贵学习时间!
或者有大佬帮助解决,找到其他原因,我是网上各种配置都配了一遍!!!!
java.lang.NoSuchMethodError: org.springframework.boot.web.servlet.error.ErrorController.getErrorPath()Ljava/lang/String;
这个错误同样是版本问题,同上面解决办法。