服務器上有個支付結果通知重試的服務,在service應用日誌里老是報這個錯誤。一哥們早先說解決,陰差陽錯的,這問題到如今也一直存在。java
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"......
今天由於要測試數據在監視服務器日誌,這個異常蹦出來的次數太多,干擾我監控。因而,決定先看看這個異常是咋回事。json
乍看呢,是有些無從下手!由於異常堆棧裏並無指明是程序裏哪一個class的哪行代碼。那就要靠靈光乍現了~~api
這個重試服務是用dubbo發佈的接口。服務器
看這個NullPointerException,忽然想起來,是否是這個服務不存在呢?app
查看代碼,果真發現,PaycenterNotifyRetryService的package名是com.emax.paycenter.api.service。svn
那是哪裏調用這個接口呢? 想起來以前咱們在調度中心有配置了調用。測試
這裏配置的接口地址是http://192.168.40.240:9995/com.emax.paycenter.backend.service.PaycenterNotifyRetryService?method=notifyRetry,與異常裏描述的接口地址一致。 那看來就是這裏致使的了。 改正後,問題解決了 。spa
查看svn改動記錄,發現,從18/1/17的版本號3601以後,這個接口地址就被改爲如今的了。3d
<dubbo:service protocol="dubbo,jsonrpc" interface="com.emax.paycenter.api.service.PaycenterNotifyRetryService" ref="notifyService" timeout="${dubbo.timeout}" retries="${dubbo.retries}" />
svn history:日誌