Тайм-аут клиента JAX-WS WebService не работает - PullRequest
0 голосов
/ 06 января 2020

Я пытаюсь установить TimeOut для клиента службы, но не могу заставить его работать.

Я вызываю поддельный веб-сервис, который задерживает ответ на 30 se c, поэтому я может проверить, работает ли свойство для TimeOut.

До сих пор я пробовал это.

Этот компонент конфигурации содержит все свойства для подключения клиента веб-сервиса.

@Bean
    public JaxWsPortProxyFactoryBean consultaLineaCuentaWS() {
        JaxWsPortProxyFactoryBean proxyFactory = new JaxWsPortProxyFactoryBean();

        try {
            proxyFactory.setWsdlDocumentUrl(new URL("http://localhost:8080/ConsultaLineaCuentaWS/ebsConsultaLineaCuentaWSSB11?WSDL"));
            proxyFactory.setServiceInterface(ConsultaLineaCuentaWSPortType.class);

            proxyFactory.setServiceName("ConsultaLineaCuentaWSService");
            proxyFactory.setPortName("ebsConsultaLineaCuentaWSSB11");
            proxyFactory.setNamespaceUri("http://esb.com.pe/SOA/service/ConsultaLineaCuentaWS");
            proxyFactory.setLookupServiceOnStartup(false);

            proxyFactory.addCustomProperty("com.sun.xml.ws.connect.timeout", 5);
            proxyFactory.addCustomProperty("com.sun.xml.ws.request.timeout", 5);

        } catch (MalformedURLException e) {
             e.printStackTrace();
        }
        return proxyFactory;
    }

Я вызываю службу в этом классе.

@Service
public class ConsultaLineaCuentaImpl implements ConsultaLineaCuenta {

    private static Logger logger = Logger.getLogger(ConsultaLineaCuentaImpl.class);

    @Autowired
    @Qualifier(value = "consultaLineaCuentaWS")
    private ConsultaLineaCuentaWSPortType consultaLineaCuentaWSPortType;

    @Override
    public ConsultarLineaCuentaResponse consultarLineaCuenta(String mensajeTransaccion,
            ConsultarLineaCuentaRequest request) throws WSException {

        ConsultarLineaCuentaResponse objConsultarLineaCuentaResponse = new ConsultarLineaCuentaResponse();

        try {           
            objConsultarLineaCuentaResponse = consultaLineaCuentaWSPortType.consultarLineaCuenta(request);

        } catch (Exception ex) {

            throw new WSException(ex);
        } 
        return objConsultarLineaCuentaResponse;
    }
}

При печати в журнале я вижу это сообщение

SERVER: AdminServer [ERROR] [06-01-2020 15:41:31.952] (ConsultaLineaCuentaImpl.java:51) - [ obtenerDatosCrm idTx= ] - [consultarLineaCuenta]Could not access remote service at [null]; nested exception is javax.xml.ws.WebServiceException: java.net.SocketTimeoutException: Read time out after 5 millis-org.springframework.remoting.RemoteAccessException: Could not access remote service at [null]; nested exception is javax.xml.ws.WebServiceException: java.net.SocketTimeoutException: Read time out after 5 millis

В журнале печатается, что служба перестала работать с истечением времени ожидания через 5 миллионов, но она все 30 секунд c ожидает, что мой сервис задерживает ответ.

Обратите внимание, этот журнал напечатан до вызова.

SERVER: AdminServer [ INFO] [06-01-2020 15:41:01.894] (ConsultaLineaCuentaImpl.java:41) - [ obtenerDatosCrm idTx= ] - [consultarLineaCuenta] - request = 
imprimir response
SERVER: AdminServer [ERROR] [06-01-2020 15:41:31.952] (ConsultaLineaCuentaImpl.java:51) - [ obtenerDatosCrm idTx= ] - [consultarLineaCuenta]Could not access remote service at [null]; nested exception is javax.xml.ws.WebServiceException: java.net.SocketTimeoutException: Read time out after 5 millis-org.springframework.remoting.RemoteAccessException: Could not access remote service at [null]; nested exception is javax.xml.ws.WebServiceException: java.net.SocketTimeoutException: Read time out after 5 millis

Как я могу сделать так, чтобы мой вызов разорвал соединение 5 секунд прошло? Как вы можете видеть, вы знаете, что оно ждет все время, даже если тайм-аут установлен на 5

...