4月13日,小雨~~

时间:2022-02-02 02:14:18

服务器上有个支付结果通知重试的服务,在service应用日志里总是报这个错误。一哥们早先说解决,阴差阳错的,这问题到现在也一直存在。

2018-04-13 12:03:45.773 [refundQuery_120345735_3CA9F] INFO  [ExceptionAspect] - 耗时:39ms
2018-04-13 12:03:58.865 [1455973373@qtp-1078507879-197] ERROR [org.mortbay.log] - /com.emax.paycenter.backend.service.PaycenterNotifyRetryService
java.lang.NullPointerException: null
	at com.ofpay.dubbo.rpc.protocol.jsonrpc.JsonRpcProtocol$InternalHandler.handle(JsonRpcProtocol.java:59) ~[dubbo-rpc-jsonrpc-1.0.1.jar:na]
	at com.alibaba.dubbo.remoting.http.servlet.DispatcherServlet.service(DispatcherServlet.java:64) ~[emei-dubbo-2.4.11.jar:2.4.11]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) ~[servlet-api.jar:na]
	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) ~[jetty-6.1.26.jar:6.1.26]
	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:401) ~[jetty-6.1.26.jar:6.1.26]
	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) [jetty-6.1.26.jar:6.1.26]
	at org.mortbay.jetty.Server.handle(Server.java:326) [jetty-6.1.26.jar:6.1.26]
	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) [jetty-6.1.26.jar:6.1.26]
	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:945) [jetty-6.1.26.jar:6.1.26]
	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756) [jetty-6.1.26.jar:6.1.26]
	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218) [jetty-6.1.26.jar:6.1.26]
	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) [jetty-6.1.26.jar:6.1.26]
	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410) [jetty-6.1.26.jar:6.1.26]
	at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) [jetty-util-6.1.26.jar:6.1.26]
2018-04-13 12:04:15.830 [refundQuery_120415830_8E57A] INFO  [IPayCenterFacadeImpl] - 调用服务:refundQuery
2018-04-13 12:04:15.831 [refundQuery_120415830_8E57A] INFO  [IPayCenterFacadeImpl] - 请求参数:{"biz_system":"5"......

今天因为要测试数据在监视服务器日志,这个异常蹦出来的次数太多,干扰我监控。于是,决定先看看这个异常是咋回事。

 

乍看呢,是有些无从下手!因为异常堆栈里并没有指明是程序里哪个class的哪行代码。那就要靠灵光乍现了~~

 

这个重试服务是用dubbo发布的接口。

看这个NullPointerException,突然想起来,是不是这个服务不存在呢?

查看代码,果然发现,PaycenterNotifyRetryService的package名是com.emax.paycenter.api.service。

那是哪里调用这个接口呢? 想起来之前我们在调度中心有配置了调用。

4月13日,小雨~~

 这里配置的接口地址是http://192.168.40.240:9995/com.emax.paycenter.backend.service.PaycenterNotifyRetryService?method=notifyRetry,与异常里描述的接口地址一致。 那看来就是这里导致的了。 改正后,问题解决了 。

查看svn改动记录,发现,从18/1/17的版本号3601之后,这个接口地址就被改成现在的了。

    <dubbo:service protocol="dubbo,jsonrpc" interface="com.emax.paycenter.api.service.PaycenterNotifyRetryService"
                    ref="notifyService"    timeout="${dubbo.timeout}" retries="${dubbo.retries}" />

svn history:

 4月13日,小雨~~