修复dubbo注册中心警告bug

博客内容描述了在dubbo注册中心遇到的一个服务提供者界面显示警告的问题,该警告错误地提示不同服务名注册了相同服务。问题根源在于/dubbo-admin/src/main/webapp/WEB-INF/templates/governance/screen/providers/index.vm模板文件的代码逻辑错误,原代码在应用名与第一个遍历时的名称不一致时即触发警告。正确的做法应该是仅当不同应用发布了相同服务时才发出警告。作者提出了修改后的代码以正确实现这一功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.dubbo注册中心服务提供者界面显示警告,点击提示不同服务名注册了相同服务,

这是界面显示逻辑bug,源码文件位置:/dubbo-admin/src/main/webapp/WEB-INF/templates/governance/screen/providers/index.vm

部分代码如下:

#set($providerApplication = "")
#foreach($provider in $providers)
<tr>
	<td><input type="checkbox" name="ids" value="$provider.id" /></td>
	<td><a href="providers/$provider.id">#if($address)$tool.getSimpleName($provider.service)#else$provider.address#end</a></td>
	<td>$tool.getProviderWeight($provider)</td>
	<td>#if($provider.dynamic)<font color="green">$i18n.get("dynamic")</font>#else<font color="blue">$i18n.get("static")</font>#end</td>
	<td>#if($tool.isProviderEnabled($provider))<font color="green">$i18n.get("enabled")</font>#else<font color="red">$i18n.get("disabled")</font>#end</td>
	<td>
		#set($errorLevel = "ok")
		#set($errorMessage = "")
		
		#if ($providerApplication == "")
			#set($providerApplication = $provider.application)
		#end
		
        #if($providerApplication != $provider.application)
        	#if ($errorLevel != "error") #set($errorLevel = "warn") #end
        	#set($errorMessage = "$errorMessage<br>$i18n.get('warn'): $i18n.get('CheckProviderApplicationDifferent', $providerApplication, $provider.application)")
        #end
        #if($provider.address.startsWith("127.") || $provider.address.startsWith("localhost:") || $provider.address.startsWith("0.0.0.0:"))

当判断providerApplication的值和provider.application的值不相同时就给出警告。就成为只要应用名和第一个遍历出来的不一样就加警告。而我们想要的警告是不同应用发布了相同的服务时给出警告。修改后的代码如下:

#foreach($provider in $providers)
<tr>
	<td><input type="checkbox" name="ids" value="$provider.id" /></td>
	<td><a href="providers/$provider.id">#if($address)$tool.getSimpleName($provider.service)#else$provider.address#end</a></td>
	<td>$tool.getProviderWeight($provider)</td>
	<td>#if($provider.dynamic)<font color="green">$i18n.get("dynamic")</font>#else<font color="blue">$i18n.get("static")</font>#end</td>
	<td>#if($tool.isProviderEnabled($provider))<font color="green">$i18n.get("enabled")</font>#else<font color="red">$i18n.get("disabled")</font>#end</td>
	<td>
		#set($errorLevel = "ok")
		#set($errorMessage = "")
		
		#foreach($patchProvider in $providers)
			#if ($patchProvider.application != $provider.application)
				#if ($provider.service == $patchProvider.service)
					#if ($errorLevel != "error") #set($errorLevel = "warn") #end
					#set($errorMessage = "$errorMessage<br>$i18n.get('warn'): $i18n.get('CheckProviderApplicationDifferent', $patchProvider.application, $provider.application)")
					#break
				#end
			#end
		#end
        
        #if($provider.address.startsWith("127.") || $provider.address.startsWith("localhost:") || $provider.address.startsWith("0.0.0.0:"))
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值