Кажется, я не могу обдумать это, поэтому прошу вашей помощи.
Мы используем JPOS для передачи некоторых сообщений между нами и деловым партнером, и мы видим ошибкио "shutdownOutput () не поддерживается в SSLSocket".Кажется, это редкая проблема, , как заметил другой разработчик в 2012 году :
Почему я первый, кто столкнулся с этой проблемой?Я предполагаю, что упускаю что-то простое.Или никто не использует SSL с jpos.Или никто не закрывает соединения ...
В последующем обсуждении упоминается вопрос здесь на SO , но предложенные решения кажутся невозможными для применения из-за следующего потока событий:
- мы делаем один вызов в библиотеку JPOS для отправки запроса (
org.jpos.iso.BaseChannel.send(ISOMsg msg)
) - мы делаем один вызов в библиотеку JPOS для получения ответа (
ISOMsg response = org.jpos.iso.BaseChannel.receive()
) - через ряд внутренних методов и подметодов, JPOS получает ответ, обрабатывает его и закрывает сокет с помощью проблемного вызова shutdownOutput ()
- при попытке закрыть сокет,он выдаст исключение - и при этом отбросит интересующий нас ответ
Кажется, у нас нет «точки инъекции», где мы можем фактически получить сообщение, но не закрыть сокет(мы могли бы сделать это сами или обработать исключение по-другому).
Что я здесь не вижу?
К вашему сведению, мы используем JPOS v1.7.0 от 2010 года, но при чтении текущего кода кажется, что даже v2.1.7 делает то же самое.
Edit: Кроме того, есть некоторые функции ведения журналов, но, похоже, они полностью содержатсяв пределах звонка receive()
.Возможно, я мог бы исследовать более подробно, если бы я мог проверить журнал, но, кажется, нет места, где есть (или где я могу) установить (или передать) LogListener
.Где я могу найти информацию об управлении журналами JPOS, как их просмотреть?
РЕДАКТИРОВАТЬ 2: Я был слеп, читая код.Исходя из очень проницательных комментариев, нам нужно обновить наш экземпляр JPOS по крайней мере до версии 1.8.8, чтобы получить исправление для этой проблемы.