Detalhes da conexão e tempos limite em um cliente de serviço da web java

Eu tenho que implementar um cliente de serviço da web em um determinado arquivo WSDL. Usei a ferramenta 'wsimport' do SDK para criar classes Java a partir do WSDL, bem como uma classe que agrupa o único método do serviço da web (enhanceAddress(auth, param, address)) em um método java simples. Por enquanto, tudo bem. O serviço da web está funcional e retornando resultados corretamente. O código fica assim:

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);
}

O problema agora: preciso obter informações sobre a conexão e qualquer erro que possa ocorrer para preencher vários valores JMX (como COUNT_READ_TIMEOUT, COUNT_CONNECT_TIMEOUT, ...) Infelizmente, o método não lança oficialmente nenhuma exceção, portanto, para para obter detalhes sobre uma ConnectException, preciso usargetCause() noClientTransportException isso será lançado.

Pior ainda: tentei testar o valor do tempo limite de leitura, mas não há nenhum. Alterei a localização do serviço no arquivo wsdl para postar a solicitação em um script php que simplesmente espera uma eternidade e não volta. Adivinha o quê: O cliente de serviço da web faznão tempo limite, mas espera para sempre também (eu matei o aplicativo após mais de 30 minutos de espera). Essa não é uma opção para o meu aplicativo, pois, eventualmente, as conexões tcp acabam se algumas delas ficarem "presas".

oenhanceAddress(auth, param, address) O método não foi implementado, mas anotado com javax.jws. * Anotações, o que significa que não consigo ver / alterar / inspecionar o código realmente executado.

Eu tenho outra opção senão jogar fora todo o wsimport / javax.jsw-stuff e implementar meu próprio cliente de sabão?

questionAnswers(1)

yourAnswerToTheQuestion