Сведения о соединении и время ожидания в клиенте веб-службы Java
Я должен реализовать клиент веб-службы для данного файла WSDL. Я использовал инструмент wsimport в SDK для создания классов Java из WSDL, а также класс, который обертывает единственный метод веб-службы (enhanceAddress(auth, param, address)
) в простой метод Java. Все идет нормально. Веб-сервис функционален и корректно возвращает результаты. Код выглядит так:
try {
EnhancedAddressList uniservResponse = getWebservicePort().enhanceAddress(m_auth, m_param, uniservAddress);
//Where the Port^ is the HTTP Soap 1.2 Endpoint
}catch (Throwable e) {
throw new AddressValidationException("Error during uniserv webservice request.", e);
}
Проблема сейчас: мне нужно получить информацию о соединении и любую ошибку, которая может возникнуть, чтобы заполнить различные значения JMX (такие как COUNT_READ_TIMEOUT, COUNT_CONNECT_TIMEOUT, ...). К сожалению, метод официально не генерирует никаких исключений, поэтому по порядку чтобы получить подробную информацию о ConnectException, мне нужно использоватьgetCause()
наClientTransportException
это будет брошено.
Еще хуже: я попытался проверить значение времени ожидания чтения, но его нет. Я изменил расположение службы в файле wsdl, чтобы отправить запрос в скрипт php, который просто ждет вечно и не возвращается. Угадайте, что: клиент веб-службы делаетне тайм-аут, но ждет всегда (я убил приложение после 30+ минут ожидания). Это не вариант для моего приложения, так как в конце концов у меня заканчиваются соединения tcp, если некоторые из них застряли.
enhanceAddress(auth, param, address)
Метод не реализован, но аннотирован javax.jws. * Аннотации, означающие, что я не могу видеть / изменять / проверять код, который фактически выполняется.
Есть ли у меня какой-либо вариант, кроме как выбросить весь wsimport / javax.jsw-вещи и реализовать свой собственный мыльный клиент?