1. 程式人生 > 實用技巧 >dubbo檢查服務狀態失敗分析

dubbo檢查服務狀態失敗分析

報錯:Failed to check the status of the service com.taotao.service.ItemService. No provider available for the servicejava
原因1:
Dubbo預設會在啟動時檢查依賴的服務是否可用,不可用時會丟擲異常,阻止Spring初始化完成,以便上線時,能及早發現問題,預設check=true。
如果你的Spring容器是懶載入的,或者通過API程式設計延遲引用服務,請關閉check,否則服務臨時不可用時,會丟擲異常,拿到null引用,如果check=false,總是會返回引用,當服務恢復時,能自動連上。

可以通過check="false"關閉檢查,比如,測試時,有些服務不關心,或者出現了迴圈依賴,必須有一方先啟動。
1、關閉某個服務的啟動時檢查:(沒有提供者時報錯)
<dubbo:reference interface=“com.foo.BarService” check=“false” />

2、關閉所有服務的啟動時檢查:(沒有提供者時報錯) 寫在定義服務消費者一方
<dubbo:consumer check=“false” />

3、關閉註冊中心啟動時檢查:(註冊訂閱失敗時報錯)
<dubbo:registry check=“false” />

轉載來源 http://www.cnblogs.com/luojunwen/p/7305925.html
原因2:service層未暴露提供者提供的方法,應該使用dubbo的@Service,而不是spring的@Service
在這裡插入圖片描述

原因3:如果專案使用了dubbo分散式,並且是在向service層提交請求執行方法時,如果方法使用了事務註解@Transactional,那麼@Service應該修改為@Service(interfaceClass = XXXService.class),指定一下事務開啟的實體類
在這裡插入圖片描述