Как тайм-аут на стороне клиента обратиться к веб-сервису SOAP - PullRequest
0 голосов
/ 10 ноября 2018

У меня есть REST API, который используется интерфейсом java-скрипта (угловой).

Когда вызывается моя конечная точка API REST, API, в свою очередь, должен выполнить вызов веб-службы SOAP.

Клиентская банка для службы мыла находится в classpath.

Служба REST работает в Jetty и Open JDK 1.8.

Веб-сервис SOAP размещается отдельно, сведения о котором я не имею, кроме конечной точки и wsdl и т. Д.

Все работает нормально.

Одним из требований является время ожидания API REST через 5 секунд.

Иногда для ответа конечной точки SOAP требуется около 10 секунд.
Поэтому в идеале конечная точка REST должна быть отключена через 5 секунд, но это никогда не происходит.

Он продолжает ожидать ответа службы SOAP, поэтому независимо от времени ответа службы SOAP определяется ответ API REST.

Пожалуйста, не предлагайте асинхронные вызовы - цель состоит в том, чтобы сделать вызов клиента SOAP тайм-аутом веб-службы SOAP.

Попробовал несколько вариантов установки времени ожидания. Смотрите ниже варианты, найденные через Интернет. К сожалению, ни один из них не работает:

Get QName
Create Service from QName
GetPort
Map<String,Object> context = ((BindingProvider)port).getRequestContext();
context.put("javax.xml.ws.service.endpoint.address",https wsdl location");

/** try and timeout after 5 seconds - NOT working **/
/** option 1 **/
context.put("com.sun.xml.internal.ws.request.timeout", "5000");
context.put("com.sun.xml.internal.ws.connect.timeout","5000");

/** option 2 **/
context.put("javax.xml.ws.client.receiveTimeout", "5000");
context.put("javax.xml.ws.client.connectionTimeout","5000");

/** option 3 **/
context.put("com.sun.xml.ws.request.timeout", "5000");
context.put("com.sun.xml.ws.connect.timeout","5000");

Ни одна из этих работ. Где-то в Интернете кто-то предложил следующее, что также не работает:

context.put("timeout","10");

ПРИМЕЧАНИЕ: вышеуказанные опции были опробованы по одному. Не собирай их всех за один раз!

У кого-нибудь есть указатели?

Если это поможет, я использую мыльный клиент jar - wsclient_extended.jar Подводя итог: мыльный клиент работает в Jetty с Open JDK 1.8. Спасибо

...