SpringCloudGateway路由失效問題
SpringCloudGateway整合nacos路由失效
報(bào)錯(cuò)如下
java.lang.IllegalStateException: Invalid host: lb://mall_admin_service
負(fù)載均衡配置的沒有問題,對(duì)應(yīng)的服務(wù)名稱也沒有問題,斷點(diǎn)跟蹤了一下,在這個(gè)RouteToRequestUrlFilter類中報(bào)錯(cuò),
代碼很簡(jiǎn)單
if ("lb".equalsIgnoreCase(routeUri.getScheme()) && routeUri.getHost() == null) {
// Load balanced URIs should always have a host. If the host is null it is
// most
// likely because the host name was invalid (for example included an
// underscore)
throw new IllegalStateException("Invalid host: " + routeUri.toString());
}在讀取配置文件的時(shí)候,沒有解析到對(duì)應(yīng)的host主機(jī)

private static final String SCHEME_REGEX = "[a-zA-Z]([a-zA-Z]|\\d|\\+|\\.|-)*:.*";
static final Pattern schemePattern = Pattern.compile(SCHEME_REGEX);
// 部分代碼截取
if (hasAnotherScheme(routeUri)) {
// this is a special url, save scheme to special attribute
// replace routeUri with schemeSpecificPart
exchange.getAttributes().put(GATEWAY_SCHEME_PREFIX_ATTR,
routeUri.getScheme());
routeUri = URI.create(routeUri.getSchemeSpecificPart());
}這里包含了一段正則表達(dá)式驗(yàn)證,驗(yàn)證配置的服務(wù)名稱是否合法,很明顯我們的是以下劃線配置的,所以驗(yàn)證失敗,URI.create創(chuàng)建的時(shí)候host解析失敗配置為空的。
也能了解了一下SpringCloudGateWay實(shí)現(xiàn)原理,所有的過濾器均以GlobalFilter 的子接口實(shí)現(xiàn),同樣是一些列的過濾器鏈。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- 解決SpringCloud gateway網(wǎng)關(guān)配置MVC攔截器報(bào)錯(cuò)問題
- SpringCloud Gateway 權(quán)限認(rèn)證的實(shí)現(xiàn)
- SpringCloud Gateway中斷言路由和過濾器的使用詳解
- SpringCloud Zuul和Gateway的實(shí)例代碼(搭建方式)
- SpringCloud GateWay動(dòng)態(tài)路由用法
- SpringCloud Gateway路由核心原理解析
- SpringCloud-Gateway網(wǎng)關(guān)的使用實(shí)例教程
- 使用SpringCloud Gateway解決跨域問題
- SpringCloud網(wǎng)關(guān)Gateway功能實(shí)現(xiàn)
相關(guān)文章
IDEA中JDK是1.8但Java版本只有21和17的解決辦法
JDK 1.8(Java Development Kit 1.8)是Java平臺(tái)的一個(gè)版本,它包含了用于開發(fā)和運(yùn)行Java應(yīng)用程序的工具和庫(kù),下面這篇文章主要給大家介紹了關(guān)于IDEA中JDK是1.8但Java版本只有21和17的解決辦法,需要的朋友可以參考下2024-01-01
淺談Java中的n種隨機(jī)數(shù)產(chǎn)生辦法
眾所周知,隨機(jī)數(shù)是任何一種編程語(yǔ)言最基本的特征之一。而生成隨機(jī)數(shù)的基本方式也是相同的:產(chǎn)生一個(gè)0到1之間的隨機(jī)數(shù)??此坪?jiǎn)單,但有時(shí)我們也會(huì)忽略了一些有趣的功能。2015-09-09
使用WebMvcConfigurer配置SpringMVC過程
WebMvcConfigurer配置類用于Java代碼配置SpringMvc,實(shí)現(xiàn)該接口或繼承WebMvcConfigurationSupport類,常用方法:addInterceptors(攔截器)、addViewControllers(視圖控制器)等2024-12-12
Spring MVC獲取參數(shù)和自定義參數(shù)類型轉(zhuǎn)換器及編碼過濾器
這篇文章主要為大家詳細(xì)介紹了Spring MVC獲取參數(shù)和自定義參數(shù)類型轉(zhuǎn)換器及編碼過濾器,文中通過代碼示例介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下2023-06-06
Java基礎(chǔ)詳解之集合框架工具Collections
這篇文章主要介紹了Java基礎(chǔ)詳解之集合框架工具Collections,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有很好地幫助,需要的朋友可以參考下2021-04-04
SpringBoot項(xiàng)目中使用Swagger2及注解解釋的詳細(xì)教程
Swagger2是一個(gè)開源項(xiàng)目,用于為RESTful Web服務(wù)生成REST API文檔,下面這篇文章主要給大家介紹了關(guān)于SpringBoot項(xiàng)目中使用Swagger2及注解解釋的詳細(xì)教程,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04
Mybatis之動(dòng)態(tài)sql標(biāo)簽的使用
這篇文章主要介紹了Mybatis之動(dòng)態(tài)sql標(biāo)簽的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06

