Мне нужно реализовать клиент webservice для данного WSDL файла.
Я использовал инструмент SDK "wsimport" для создания Java-классов из WSDL, а также для класса, который переносит только метод webservice (enhanceAddress(auth, param, address)
) в простой Java-метод. Все идет нормально. Webservice является функциональным и возвращает результаты исправления. Код выглядит следующим образом:
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 script, который просто ждет навсегда и не вернется. Угадайте, что: клиент веб-службы не время, но ждет и навсегда (я убил приложение после 30 + минут ожидания). Это не вариант для моего приложения, поскольку в конечном итоге у меня заканчиваются tcp-соединения, если некоторые из них "застревают".
Метод enhanceAddress(auth, param, address)
не реализован, но аннотируется с помощью javax.jws. * Аннотации, означающие, что я не вижу/не изменяю/не проверяю реально выполненный код.
Есть ли у меня какой-либо вариант, но чтобы выбросить весь файл wsimport/javax.jsw и реализовать собственный клиент для мыла?