Краткое описание
Я использую JBoss SwitchYard для подключения к защищенной удаленной веб-службе SOAP. По какой-либо причине после отправки запроса; удаленный веб-сервис останавливает любую дальнейшую связь; поэтому я не получаю ответа.
Вопрос
Мне нужна идея или решение, что может быть проблемой здесь.
Error
Вызвано: java.net.SocketException: SocketException вызывает https://**********.asmx: Неожиданный конец файла с сервера
Описание и примечания
- Удаленный веб-сервис использует самозаверяющий сертификат; Я импортировал сертификат сервера в свою локальную доверенность + плюс у меня есть мой другой сертификат (в моем хранилище ключей), чтобы идентифицировать себя на удаленном сервере.
- Благодаря -Djavax.net.debug = all журналам отладки SSL и журналам Wireshark Я знаю, что и клиент, и сервер сделали успешное SSL-квитирование и клиент успешно отправили запрос.
- Сервер также использует фильтрацию IP, чтобы разрешить прямую связь, а мой IP включен в белый список.
- Если я попытаюсь отправить тот же XML-запрос с помощью SoapUI, он работает нормально, и я получаю ответ. Вы должны учитывать, что SoapUI использует только хранилище ключей; он настроен на то, чтобы всегда доверять удаленным службам, поэтому нет или нет надежного хранилища.
- Теперь идет смешная часть. Если я использую Fiddler (бесплатный прокси-сервер для веб-отладки) как "человек посередине" между моим JBoss SwitchYard и удаленным веб-сервисом (чтобы увидеть, что происходит), внезапно все работает.
- Единственное различие между прямым подключением и использованием Fiddler в качестве прокси-сервера заключается в том, что в реальном соединении используется параметр заголовка Connection = Keep-Alive, а в случае Fiddler Proxy-Connection = Keep-Alive. Я не знаю, есть ли другие существенные различия.
- Если я вручную изменю эти параметры заголовка в SoapUI, я все равно получаю успешный ответ. Соединение провалится, только если мне не хватает SOAPAction и Content-Type параметров заголовка, но они присутствуют в каждом случае (и совпадают).
- Когда я наблюдаю это сообщение через Wireshark, я вижу только, что удаленный сервер останавливает дальнейшую связь (когда приложение JBoss Switchyard напрямую взаимодействует с удаленным веб-сервисом).
- У меня нет доступа к удаленным журналам, и я не могу получить их. Поэтому я работаю вслепую.
- В каждом случае (с или без Fiddler) я использую прокси-сервер компании для доступа к удаленному веб-сервису. Этот прокси-сервер не является проблемой, потому что другие приложения SwitchYard работают нормально.
Инструменты
- JBoss EAP 6.4
- JBoss SwitchYard 2.0.1.redhat-621159