У меня есть контроллер, который вызывает внешний веб-сервис (WS). Когда он вызывает WS, но ничего не обрабатывает, поскольку он уже обновлен, он возвращает OK (200), а мой контроллер возвращает успех (AJAX). Однако, если WS должен обработать обновление, и это занимает несколько минут (не слишком долго), он все равно возвращает OK (200), но мой контроллер возвращает ОШИБКУ 500.
Я также пытаюсь вызвать контроллер с помощью кнопки отправки. , вместо AJAX, с тем же результатом.
Надеюсь, я хорошо объяснил. Кто-нибудь может помочь?
вызов контроллера WebService
@PostMapping(value = "/xyz.htm", params="callWebService")
@ResponseBody
public String callWebService(final HttpSession session, HttpServletRequest request) {
String resultado="{\"messageType\":\"error\",\"message\":\"Updated error\"}";
try {
SendNotification sendNotification = new SendNotification();
if (SendNotification.send()) {
resultado="{\"messageType\":\"info\",\"message\":\"Updated\"}";
}
}catch (Exception e) {
logger.error("xyz.callWebService -- Error calling WS", e);
}
return resultado;
}
Класс SendNotification
public boolean send() throws Exception {
String token = getToken();
if (token != null && !token.isEmpty()) {
Client client = null;
WebTarget myResource = null;
Response res = null;
try {
client = ClientBuilder.newBuilder().sslContext(Conexiones.configurarSSL()).build();
myResource = client.target(urlAvisos);
Invocation.Builder builder = myResource.request(MediaType.APPLICATION_JSON);
builder.header(HttpHeaders.AUTHORIZATION, "Bearer " + token);
res = builder.post(Entity.entity("{}", MediaType.APPLICATION_JSON));
if (res.getStatusInfo().getReasonPhrase().equalsIgnoreCase("ok")) {
logger.error("sent - OK");
return true;
} else {
logger.error("sent- not OK");
return false;
}
} catch (Exception ex) {
logger.error("SendNotification.send", ex);
} finally {
if (res != null) {
res.close();
}
if (client != null) {
client.close();
}
}
} else {
return false;
}
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... webservice