一个异常引起的反思

昨天在调试程序的时候,看到程序报错如下:

log4j:WARN No appenders could be found for logger (com.alibaba.dubbo.common.logger.LoggerFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Just for test! hello ,Stanley
Exception in thread "main" com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method searchRefundStatus in the service com.dinpay.refund.bank.IBankService. Tried 3 times of the providers [192.168.1.20:20880] (1/1) from the registry 224.224.224.224:1234 on the consumer 192.168.1.20 using the dubbo version 2.4.5. Last error is: Failed to invoke remote method: searchRefundStatus, provider: dubbo://192.168.1.20:20880/com.dinpay.refund.bank.IBankService?anyhost=true&application=consumer-of-refund-app&check=false&dubbo=2.5.1&interface=com.dinpay.refund.bank.IBankService&methods=test,searchRefundStatus&pid=1208&side=consumer&timestamp=1347594120376, cause: Failed to send message Request [id=3, version=2.0.0, twoway=true, event=false, broken=false, data=RpcInvocation [methodName=searchRefundStatus, parameterTypes=[class com.dinpay.refund.bank.OrderPo], arguments=[com.dinpay.refund.bank.OrderPo@176e552], attachments={path=com.dinpay.refund.bank.IBankService, interface=com.dinpay.refund.bank.IBankService, version=0.0.0}]] to /192.168.1.20:20880, cause: Serialized class com.dinpay.refund.bank.OrderPo must implement java.io.Serializable
at com.alibaba.dubbo.rpc.cluster.support.FailoverClusterInvoker.doInvoke(FailoverClusterInvoker.java:101)
at com.alibaba.dubbo.rpc.cluster.support.AbstractClusterInvoker.invoke(AbstractClusterInvoker.java:227)
at com.alibaba.dubbo.rpc.cluster.support.wrapper.MockClusterInvoker.invoke(MockClusterInvoker.java:72)
at com.alibaba.dubbo.rpc.proxy.InvokerInvocationHandler.invoke(InvokerInvocationHandler.java:52)
at com.alibaba.dubbo.common.bytecode.proxy0.searchRefundStatus(proxy0.java)
at com.dinpay.refund.consumer.Consumer.main(Consumer.java:38)
Caused by: com.alibaba.dubbo.remoting.RemotingException: Failed to send message Request [id=3, version=2.0.0, twoway=true, event=false, broken=false, data=RpcInvocation [methodName=searchRefundStatus, parameterTypes=[class com.dinpay.refund.bank.OrderPo], arguments=[com.dinpay.refund.bank.OrderPo@176e552], attachments={path=com.dinpay.refund.bank.IBankService, interface=com.dinpay.refund.bank.IBankService, version=0.0.0}]] to /192.168.1.20:20880, cause: Serialized class com.dinpay.refund.bank.OrderPo must implement java.io.Serializable
at com.alibaba.dubbo.remoting.transport.netty.NettyChannel.send(NettyChannel.java:108)
at com.alibaba.dubbo.remoting.transport.AbstractClient.send(AbstractClient.java:270)
at com.alibaba.dubbo.remoting.transport.AbstractPeer.send(AbstractPeer.java:51)
at com.alibaba.dubbo.remoting.exchange.support.header.HeaderExchangeChannel.request(HeaderExchangeChannel.java:112)
at com.alibaba.dubbo.remoting.exchange.support.header.HeaderExchangeClient.request(HeaderExchangeClient.java:91)
at com.alibaba.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient.request(ReferenceCountExchangeClient.java:81)
at com.alibaba.dubbo.rpc.protocol.dubbo.DubboInvoker.doInvoke(DubboInvoker.java:96)
at com.alibaba.dubbo.rpc.protocol.AbstractInvoker.invoke(AbstractInvoker.java:144)
at com.alibaba.dubbo.rpc.listener.ListenerInvokerWrapper.invoke(ListenerInvokerWrapper.java:74)
at com.alibaba.dubbo.monitor.support.MonitorFilter.invoke(MonitorFilter.java:75)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
at com.alibaba.dubbo.rpc.protocol.dubbo.filter.FutureFilter.invoke(FutureFilter.java:53)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
at com.alibaba.dubbo.rpc.filter.ConsumerContextFilter.invoke(ConsumerContextFilter.java:48)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
at com.alibaba.dubbo.rpc.protocol.InvokerWrapper.invoke(InvokerWrapper.java:53)
at com.alibaba.dubbo.rpc.cluster.support.FailoverClusterInvoker.doInvoke(FailoverClusterInvoker.java:77)
... 5 more
Caused by: java.lang.IllegalStateException: Serialized class com.dinpay.refund.bank.OrderPo must implement java.io.Serializable
at com.alibaba.com.caucho.hessian.io.SerializerFactory.getDefaultSerializer(SerializerFactory.java:261)
at com.alibaba.com.caucho.hessian.io.SerializerFactory.getSerializer(SerializerFactory.java:233)
at com.alibaba.com.caucho.hessian.io.Hessian2Output.writeObject(Hessian2Output.java:406)
at com.alibaba.dubbo.common.serialize.support.hessian.Hessian2ObjectOutput.writeObject(Hessian2ObjectOutput.java:92)
at com.alibaba.dubbo.rpc.protocol.dubbo.DubboCodec.encodeRequestData(DubboCodec.java:184)
at com.alibaba.dubbo.remoting.exchange.codec.ExchangeCodec.encodeRequest(ExchangeCodec.java:236)
at com.alibaba.dubbo.remoting.exchange.codec.ExchangeCodec.encode(ExchangeCodec.java:75)
at com.alibaba.dubbo.rpc.protocol.dubbo.DubboCountCodec.encode(DubboCountCodec.java:42)
at com.alibaba.dubbo.remoting.transport.netty.NettyCodecAdapter$InternalEncoder.encode(NettyCodecAdapter.java:82)
at org.jboss.netty.handler.codec.oneone.OneToOneEncoder.handleDownstream(OneToOneEncoder.java:66)
at com.alibaba.dubbo.remoting.transport.netty.NettyHandler.writeRequested(NettyHandler.java:99)
at org.jboss.netty.channel.Channels.write(Channels.java:611)
at org.jboss.netty.channel.Channels.write(Channels.java:578)
at org.jboss.netty.channel.AbstractChannel.write(AbstractChannel.java:251)
at com.alibaba.dubbo.remoting.transport.netty.NettyChannel.send(NettyChannel.java:98)
... 21 more


密密麻麻的报错信息,看开头RpcException异常,马上反应到错误不是在程序代码本身,可能是配置文件的问题,或者是jar包引入不完全等问题(经验主义……汗。)……然后自己在那捣鼓了一个多小时,没弄出个名堂。。。到最后无意间看到报错信息Serializable关键字,顿时豁然开朗:这个项目本身是远程调用实现,在传输对象过程中,被传输的对象必须实现序列化。。。错误找到了,不到一分钟搞定。。。(再汗一个。。)


对于本次异常查找,解决感觉有必要做个反思:

1、经验主义错误,没看完异常信息,凭单方面经验去判断错误来源,完全不是程序员逻辑思考应该出现的……

2、读异常信息不完全,这点主要是心没静下来……有些浮躁引起的。通过本次“事故”可以看出,作为一名程序员,应该随时保持冷静、淡定。。

3、遇到错误信息心态不好,就我所知,很多人都会有这种“毛病”,遇到异常就感觉很不好,不想看到这个……这点上心态真心需要调整。。。


最后,想用诸葛亮的《诫子书》来自勉:

     夫君子之行,静以修身,俭以养德。非淡泊无以明志,非宁静无以致远。夫学须静也,才须学也。非学无以广才,非志无以成学。淫漫则不能励精,险躁则不能冶性。 年与时驰,意与日去,遂成枯落,多不接世,悲守穷庐,将复何及!



  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值