Я пытаюсь установить 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