diff --git a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/DubboCodec.java b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/DubboCodec.java index b1591918061..3c12448895f 100644 --- a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/DubboCodec.java +++ b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/DubboCodec.java @@ -22,7 +22,6 @@ import com.alibaba.dubbo.common.io.UnsafeByteArrayInputStream; import com.alibaba.dubbo.common.logger.Logger; import com.alibaba.dubbo.common.logger.LoggerFactory; -import com.alibaba.dubbo.common.serialize.ObjectInput; import com.alibaba.dubbo.common.serialize.ObjectOutput; import com.alibaba.dubbo.common.utils.ReflectUtils; import com.alibaba.dubbo.common.utils.StringUtils; @@ -73,13 +72,12 @@ protected Object decodeBody(Channel channel, InputStream is, byte[] header) thro byte status = header[3]; res.setStatus(status); try { - ObjectInput in = CodecSupport.deserialize(channel.getUrl(), is, proto); if (status == Response.OK) { Object data; if (res.isHeartbeat()) { - data = decodeHeartbeatData(channel, in); + data = decodeHeartbeatData(channel, CodecSupport.deserialize(channel.getUrl(), is, proto)); } else if (res.isEvent()) { - data = decodeEventData(channel, in); + data = decodeEventData(channel, CodecSupport.deserialize(channel.getUrl(), is, proto)); } else { DecodeableRpcResult result; if (channel.getUrl().getParameter( @@ -97,7 +95,7 @@ protected Object decodeBody(Channel channel, InputStream is, byte[] header) thro } res.setResult(data); } else { - res.setErrorMessage(in.readUTF()); + res.setErrorMessage(CodecSupport.deserialize(channel.getUrl(), is, proto).readUTF()); } } catch (Throwable t) { if (log.isWarnEnabled()) { @@ -117,11 +115,10 @@ protected Object decodeBody(Channel channel, InputStream is, byte[] header) thro } try { Object data; - ObjectInput in = CodecSupport.deserialize(channel.getUrl(), is, proto); if (req.isHeartbeat()) { - data = decodeHeartbeatData(channel, in); + data = decodeHeartbeatData(channel, CodecSupport.deserialize(channel.getUrl(), is, proto)); } else if (req.isEvent()) { - data = decodeEventData(channel, in); + data = decodeEventData(channel, CodecSupport.deserialize(channel.getUrl(), is, proto)); } else { DecodeableRpcInvocation inv; if (channel.getUrl().getParameter(