我尝试运行jsmpp库中的AutoReconnectGateway示例。我的主要任务是保持smpp会话始终连接到smpp服务器。
提交和交付功能运行良好,我可以发送和接收消息,但在一段时间(~ 1分钟)后,没有活动连接被终止。
10:20:49.117 [ActiveMQ Session Task-1] INFO org.jsmpp.session.SMPPSession - Connected
10:20:49.132 [Thread-4] INFO org.jsmpp.session.SMPPSession - Starting PDUReaderWorker with processor degree:3 ...
10:20:49.888 [Thread-5] INFO org.jsmpp.session.SMPPSession - Starting EnquireLinkSender
10:20:50.284 [pool-2-thread-1] INFO ru.ts.oss.alertsmanager.SmsProcessorThread - SMS f46e6945 sent to 79663256299 with Message=Test Message - 1
10:20:55.634 [pool-3-thread-3] INFO ru.ts.oss.alertsmanager.SmsMessageReceiverListenerImpl - Receiving delivery receipt for message 'F46E6945 ' from xxx to yyy : id:4100876613 sub:001 dlvrd:001 submit date:1504181220 done date:1504181121 stat:DELIVRD err:000 text:Test Message - 1
10:21:49.926 [Thread-4] INFO ru.ts.oss.alertsmanager.gateway.SmsGateway - Session closed
10:21:49.927 [Thread-6] INFO ru.ts.oss.alertsmanager.gateway.SmsGateway - Schedule reconnect after 5000 millis
10:21:49.927 [Thread-4] INFO org.jsmpp.session.SMPPSession - PDUReaderWorker stop
10:21:51.675 [Thread-5] INFO org.jsmpp.session.SMPPSession - EnquireLinkSender stop为了进行调试,我将"e.printStackTrace();“放在SMPPSession类的第586行
} catch (SocketTimeoutException e) {
notifyNoActivity();
} catch (IOException e) {
logger.warn("IOException while reading: {}", e.getMessage());
e.printStackTrace(); // God please don't forget about me!
close();
}
}这是从Stacktrace获取的
3706 [PDUReaderWorker: org.jsmpp.session.SMPPSession@71f250e8] WARN org.jsmpp.session.SMPPSession - IOException while reading: null
java.io.EOFException
at java.io.DataInputStream.readInt(DataInputStream.java:392)
at org.jsmpp.DefaultPDUReader.readPDUHeader(DefaultPDUReader.java:40)
at org.jsmpp.session.SMPPSession$PDUReaderWorker.readPDU(SMPPSession.java:619)
at org.jsmpp.session.SMPPSession$PDUReaderWorker.run(SMPPSession.java:602)此外,我尝试更改EnquireLinkTimer和TransactionTimer参数,使用tcpdumper嗅探流量,更改jsmpp库的版本,读取stackoverflow :),但没有成功,当没有任何活动时,我仍然得到相同的异常。
非常感谢。
发布于 2015-09-30 21:06:36
在2.2.1中已修复此问题。但是,如果由于某些原因,您需要在存在问题的地方使用2.2.0-SNAPSHOT,您可以执行以下操作
转到有问题的类OptionalParameters,并在get方法中添加参数检查,如下所示:
@SuppressWarnings("unchecked")
public static <U extends OptionalParameter> U get(Class<U> tagClass, OptionalParameter[] parameters) {
if (parameters != null) { **//THIS IS THE CHANGE**
for (OptionalParameter i : parameters) {
if (i.getClass() == tagClass) {
return (U) i;
}
}
}
logger.info("optional tag " + tagClass + " not found");
return null;
}我不确定这是不是最好的修复方法,但它确实可以让您正确地使用示例。
https://stackoverflow.com/questions/29713934
复制相似问题