Как добавить тайм-аут в API JAX-RS - PullRequest
0 голосов
/ 28 декабря 2018

У меня есть JAX-RS API, который выполняет долгую работу, и API вызывается через ajax-вызов клиентом.Клиент получает статус 503. Сервис недоступен через 50 секунд.

Как увеличить это значение времени ожидания.Я попытался увеличить время ожидания соединения в Tomcat (который является хостинг API).Я также попытался добавить время ожидания в вызове ajax, но это также не сработало.

1 Ответ

0 голосов
/ 30 декабря 2018

Вы можете использовать аннотацию Suspended и создать TimeoutHandler.

Не уверен, что вам нужно увеличить время ожидания в tomcat, используя этот пример.

    public class Resource {

        private Executor executor = Executors.newSingleThreadExecutor();

        @GET
        public void asyncGet(@Suspended final AsyncResponse asyncResponse) {

            asyncResponse.setTimeoutHandler(new TimeoutHandler() {
                @Override
                public void handleTimeout(AsyncResponse asyncResponse) {
                    asyncResponse.resume("Processing timeout.");
                    executor.shutdown();
                }
            });

            asyncResponse.setTimeout(60, TimeUnit.SECONDS);
            executor.submit(() -> {
                String result = someService.expensiveOperation();
                asyncResponse.resume(result);
                executor.shutdown();
            });
        }
    }

Документация по Джерси здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...