2012-05-25 140 views
1

我开发SMPP客户端,当我的时间后收到InvalidResponseException时间,我的堆栈跟踪增长:Java错误堆栈跟踪积累

org.jsmpp.extra.NegativeResponseException: Negative response 0000000f found 
    at org.jsmpp.session.AbstractSession.validateResponse(AbstractSession.java:162) 
    at org.jsmpp.session.AbstractSession.executeSendCommand(AbstractSession.java:203) 
    at org.jsmpp.session.SMPPSession.sendBind(SMPPSession.java:143) 
    at org.jsmpp.session.SMPPSession.connectAndBind(SMPPSession.java:86) 
    at com.sms.client.gw.Gateway.newSession(Gateway.java:107) 
    at com.sms.client.gw.Gateway.getSession(Gateway.java:81) 
    at com.sms.client.gw.Gateway.access$300(Gateway.java:33) 
    at com.sms.client.gw.Gateway$SessionStateListenerImpl.onStateChange(Gateway.java:196) 
    at org.jsmpp.session.AbstractSessionContext.fireStateChanged(AbstractSessionContext.java:69) 
    at org.jsmpp.session.SMPPSessionContext.changeState(SMPPSessionContext.java:44) 
    at org.jsmpp.session.AbstractSessionContext.close(AbstractSessionContext.java:58) 
    at org.jsmpp.session.SMPPSessionContext.close(SMPPSessionContext.java:10) 
    at org.jsmpp.session.AbstractSession.close(AbstractSession.java:141) 

然后堆栈跟踪是增加:

org.jsmpp.extra.NegativeResponseException: Negative response 0000000f found 
    at org.jsmpp.session.AbstractSession.validateResponse(AbstractSession.java:162) 
    at org.jsmpp.session.AbstractSession.executeSendCommand(AbstractSession.java:203) 
    at org.jsmpp.session.SMPPSession.sendBind(SMPPSession.java:143) 
    at org.jsmpp.session.SMPPSession.connectAndBind(SMPPSession.java:86) 
    at com.sms.client.gw.Gateway.newSession(Gateway.java:107) 
    at com.sms.client.gw.Gateway.getSession(Gateway.java:81) 
    at com.sms.client.gw.Gateway.access$300(Gateway.java:33) 
    at com.sms.client.gw.Gateway$SessionStateListenerImpl.onStateChange(Gateway.java:196) 
    at org.jsmpp.session.AbstractSessionContext.fireStateChanged(AbstractSessionContext.java:69) 
    at org.jsmpp.session.SMPPSessionContext.changeState(SMPPSessionContext.java:44) 
    at org.jsmpp.session.AbstractSessionContext.close(AbstractSessionContext.java:58) 
    at org.jsmpp.session.SMPPSessionContext.close(SMPPSessionContext.java:10) 
    at org.jsmpp.session.AbstractSession.close(AbstractSession.java:141) 
    at org.jsmpp.session.SMPPSession.connectAndBind(SMPPSession.java:100) 
    at com.sms.client.gw.Gateway.newSession(Gateway.java:107) 
    at com.sms.client.gw.Gateway.getSession(Gateway.java:81) 
    at com.sms.client.gw.Gateway.access$300(Gateway.java:33) 
    at com.sms.client.gw.Gateway$SessionStateListenerImpl.onStateChange(Gateway.java:196) 
    at org.jsmpp.session.AbstractSessionContext.fireStateChanged(AbstractSessionContext.java:69) 
    at org.jsmpp.session.SMPPSessionContext.changeState(SMPPSessionContext.java:44) 
    at org.jsmpp.session.AbstractSessionContext.close(AbstractSessionContext.java:58) 
    at org.jsmpp.session.SMPPSessionContext.close(SMPPSessionContext.java:10) 
    at org.jsmpp.session.AbstractSession.close(AbstractSession.java:141) 
    at org.jsmpp.session.SMPPSession$EnquireLinkSender.run(SMPPSession.java:394) 

和大。它是如何的?为什么堆积累积? 在响应之间,我将SMPPSessionContext变量设置为null,将SMPPSession设置为null

+0

我不理解你的问题。你问为什么第一个堆栈跟踪比第二个堆栈跟踪短?如果是这样,它可能是(1),因为第一个堆栈跟踪可能来自close()调用,而第二个堆栈跟踪源于run()的调用,或者(2)在调用之后捕获和记录堆栈跟踪关闭()并重新抛出异常并在调用run()之后记录堆栈跟踪。 – JoshDM

+0

你似乎在你的代码中有一个递归循环。 –

+0

我调用close,然后将SMPPSessionContext设置为null,并将SMPPSession设置为null,然后创建新的会话和上下文,但在创建sessioncontext并且未关闭executorService时跟踪大 – native1989

回答

1

据我所知,有一个试图打开新会话的close session事件的侦听器。同时,connectAndBind方法在检测到失败时尝试关闭会话,触发另一个递归循环。所以停止这样做,不要试图在close事件回调中打开一个会话(这是您的类Gateway$SessionStateListenerImpl)。