Я пытаюсь запустить AutoReconnectGateway пример из библиотеки jsmpp. Моя основная задача - держать сеанс smpp всегда подключенным к серверу smpp.jsmpp SMPPSession - IOException при чтении: null
Функция отправки и доставки работает хорошо, я могу отправлять и получать сообщения, но через некоторое время (~ 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: [email protected]] 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 :) но было не повезло, я все равно получаю такое же исключение, когда нет активности.
Большое спасибо.
Вы должны включить код, в котором вы подозреваете, что ваше исключение возникает. –
@StephenReindl Я использую стандартный пример кода из jsmpp lib. [https://code.google.com/p/jsmpp/source/browse/trunk/src/java/examples/org/jsmpp/examples/gateway/AutoReconnectGateway.java] – Vaporizer