1. 程式人生 > >簡記:com.alibaba.dubbo.remoting.RemotingException: Fail to decode request due to: RpcInvocation

簡記:com.alibaba.dubbo.remoting.RemotingException: Fail to decode request due to: RpcInvocation

原因:

1.傳輸的引數中是否包含了不能序列化的屬性,例如ImmutableList、Joda DateTime等。

解決辦法:

1.傳輸的引數中去除不能序列化的屬性,使用可序列化引數代替。

原因分析

dubbo中預設使用的是hessian的序列化,當使用spring-data-commons的pageable時,會在反序列化時出錯,出錯原因是由於hessian會先生成一個引數為0的類,再去設定類的值,然而,AbstractPageRequest中的建構函式對引數進行了限制,引數小於1的時候直接thrown異常,所以導致反序列化出錯。這就是原因。所以要麼自己定義。要麼自己定義。

具體在這個函式裡com.alibaba.com.caucho.hessian.io.JavaDeserializer.instantiate()。其它資訊自己跟蹤吧。

這個問題比較坑的一點就是dubbo會在處理失敗後,設定com.alibaba.dubbo.remoting.exchange.Request物件中的mBroken為true,然後在com.alibaba.dubbo.remoting.exchange.support.header.HeaderExchangeHandler的handleRequest方法中進行判斷,把錯誤資訊吃掉了,從而變成了Fail to decode request due to:,所以很難查出問題原因。

—————-分割線 2016-09-05 更新—————-
最近在做另一個專案時發現 hessian 和 hessian2 都可以不需要類實現 serializable 實現序裂化和反序列化。在檢視原始碼時發現,hessian 使用的是 UnsafeDeserializer 這個類,而這個類在最新的版本(2.5.3)的 dubbo 裡面並不存在,它預設只會返回 Javadeserializer ,從而導致上面反序列化報錯的問題(可能是程式碼精簡,也可能是其它原因)。dubbo專案已死,所以各位自行開發擴充套件吧,或者使用其它公司維護的版本,如 dubbox,github 上有原始碼。

相關推薦

簡記com.alibaba.dubbo.remoting.RemotingException: Fail to decode request due to: RpcInvocation

原因: 1.傳輸的引數中是否包含了不能序列化的屬性,例如ImmutableList、Joda DateTime等。 解決辦法: 1.傳輸的引數中去除不能序列化的屬性,使用可序列化引數代替。 原因分析 dubbo中預設使用的是hessian的序列化,當使用spring-data-commons的pag

dubbo 超神響應異常 com.alibaba.dubbo.remoting.TimeoutException: Waiting server-side response timeout.

比較 ace com 配置 exceptio trie AS 修改 bsp 因為dubbo默認的時間是500ms,超過這個時間它會重新請求服務層,最多嘗試三次。 如果數據量比較大就不行了顯示出來的異常為timeout。 在服務提供端設置timeout=1200000 並且加

com.alibaba.dubbo.remoting.RemotingException: Caused by: java.nio.channels.ClosedChannelException

生產遇到的一個異常如下: com.alibaba.dubbo.remoting.RemotingException: Failed to send message Response [id=0, version=2.0.0, status=20, event=false, error=nul

dubbo異常資訊com.alibaba.dubbo.remoting.TimeoutException

dubbo異常資訊: Could not complete request com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method getUserByPrimaryKey in the servi

Dubbo服務啟動時Caused by: com.alibaba.dubbo.remoting.RemotingException: Failed to bind NettyServer on /19

嚴重: Exception sending context initialized event to listener instance of class [org.springframework.web.context.ContextLoaderListener] com

dubbo com.alibaba.dubbo.remoting.RemotingException: message can not send, because channel is closed

錯誤資訊 log4j:WARN No appenders could be found for logger (com.alibaba.dubbo.common.logger.LoggerFactor

呼叫Dubbo服務報以下錯誤(com.alibaba.dubbo.remoting.RemotingException),問題原因和解決辦法

2017-04-19 23:41:48,333 ERROR [com.alibaba.dubbo.remoting.transport.AbstractClient] -  [DUBBO] Failed to start NettyClient LX-20161101CZV

com.alibaba.dubbo.remoting.RemotingException問題處理方案。

啟動專案時控制檯一直報錯,提示: com.alibaba.dubbo.remoting.RemotingException。 訪問另一個專案,時間超時。而且昨天專案啟動還正常,今天啟動就有問題。 問題是什麼都沒有做改動,無法解決。 解決方案:把電腦重啟一下,把專案clea

Dubbo-Fail to decode request due to: RpcInvocation

使用Dubbo進行服務化,遇到如下錯誤: Caused by: com.alibaba.dubbo.remoting.RemotingException: Fail to decode reque

坑之關於dubbo服務產生異常之Caused by: com.alibaba.dubbo.remoting.TimeoutException: Waiting server-side respons

簡單來說就是dubbo超時,因為dubbo預設的時間是500ms,超過這個時間它會重新訪問service層,最多嘗試三次。 所以我在測試的時候日誌顯示出來的異常為……timeout……。 剛開始的時候沒有設定,小資料量可以,如果資料量比較大就不行了。 後來在服務提供

Dubbo錯誤排查com.alibaba.dubbo.rpc.RpcException: Invoke remote method timeout

com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method 可能的錯誤原因有幾個: 一,pojo沒有沒有進行序列化 具體沒有序列化的類會在錯誤資訊中顯示,在錯誤資訊中搜索“Serializable”即可找到將其實現序列化,消

com.alibaba.dubbo.remoting.TimeoutException: Waiting server-side response timeout by scan timer.

com.alibaba.dubbo.remoting.TimeoutException: Waiting server-side response timeout by scan timer. start time: 2018-12-17 10:47:44.903, end time: 2018-1

Controller呼叫service報錯com.alibaba.dubbo.rpc.RpcException: Failed to invoke remote service XXX

Controller呼叫service報錯:com.alibaba.dubbo.rpc.RpcException: Failed to invoke remote service :XXX 1.錯誤原因:sevice方法中傳遞引數沒有序列化 RPC(遠端過程呼叫協議)是通過底層

com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method

網上查了很多方法都不好使。(dubbo介面中傳輸的物件沒有實現序列化;或者是dubbo provider沒有啟動造成的) 因為我insert資料的時候每次都會插入三條重複的資料到資料庫中,說明dubbo provider還是提供了服務的。 最後陰差陽錯把專案重新maven clean 然後insta

dubbo自定義filter,報No such extension xxxFilter for filter/com.alibaba.dubbo.rpc.Filter錯誤

前言 最近在學習dubbo的filter時候,根據dubbo的開發手冊,自定義了一個filter,然後配置,結果控制檯報 No such extension xxxFilter for filter/com.alibaba.dubbo.rpc.Filter錯誤。特此記錄。 故障復

com.alibaba.dubbo.rpc.RpcException: Forbid consumer 192.168.16.1 access service com.muji.zh.admin.se

             啊啊啊,今天搞dubbo的時候,突然報了一行錯誤:             錯誤:com.alibaba.dubbo.rpc.

dubbo啟動報錯 No such extension com.alibaba.dubbo.container.Container by name --spring.output.ansi.enab

dubbo中的 springboot專案啟動報錯內容如下: java.lang.IllegalStateException: No such extension com.alibaba.dubbo.container.Container by name --sp

關於使用 import com.alibaba.dubbo.config.annotation.Service; @Service執行時會報錯

關於使用 import com.alibaba.dubbo.config.annotation.Service; @Service執行時會報錯. 嚴重: Exception sending context initialized event to listener instance of c

Druid報錯com.alibaba.druid.parser.ParserException:sysntax error,except RPAREN,actual EXCEPT EXCEPT

一、錯誤原因及解決       此錯誤是因為Druid的WallFilter過濾器進行了SQL語句的過濾,發現SQL語句有不支援的SQL語法,故報此錯誤。如果SQL語句在SQL客戶端確定執行沒有問題,那麼可以將下面的filters屬性的wall去掉。此時重啟程式碼就

解決com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method Tried 3 times of the providers 錯誤

2018-08-29 小賴 文件初始化 解決com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method newModel in the service com.xxx.service.x