У меня есть 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.
Спасибо