powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Servlet 3.1 и timeout
38 сообщений из 38, показаны все 2 страниц
Servlet 3.1 и timeout
    #39348978
Tivak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все привет
По форуму и в интернетах не нашел, если плохо искал, дайте ссылки

Следующая проблема.
используются servlet 3.1 на сервере tomcat.
необходимо ограничить максимальное время выполнение запроса, например в 500мс.
если запрос не успели за это время обработать, то слать стандартный ответ.

Подскажите как это правильно реализовать. есть у меня несколько мыслей. но пока все попахивает костылями ))
может спецификация предлагает какое-то стандартное решения для этого?

пример использования servlet (стандартный)

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
public class SimpleAsyncServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        AsyncContext asyncContext = req.startAsync(req, resp);
        Listener listener = new Listener(asyncContext);
        req.getInputStream().setReadListener(listener);
        resp.getOutputStream().setWriteListener(listener);
    }

    private class Listener implements ReadListener, WriteListener, AsyncListener {
        private final AsyncContext asyncContext;
        private final ServletInputStream inputStream;
        private final ServletOutputStream outputStream;

        public Listener(AsyncContext asyncContext) throws IOException {
            this.asyncContext = asyncContext;
            this.inputStream = asyncContext.getRequest().getInputStream();
            this.outputStream = asyncContext.getResponse().getOutputStream();
        }

        @Override
        public void onDataAvailable() throws IOException {
            // читаем данные из inputStream 
        }

        @Override
        public void onAllDataRead() throws IOException {
            // выполняем какие действия с данными, может выполняться долго
        }

        @Override
        public void onWritePossible() throws IOException {
            // пишем данные в outputStream 
            asyncContext.complete();
        }

        @Override
        public void onError(Throwable t) {
            // логируем ошибку
        }
    }
}
...
Рейтинг: 0 / 0
Servlet 3.1 и timeout
    #39348999
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вариант -
Запрос приходит в сервлет, там тупо разбираете параметры и запускаете асинхронную обработку в неком Future, вызываете блокирующий future.get(timeout), если результата нет - то стандартный ответ, если есть - то выплевываем его
...
Рейтинг: 0 / 0
Servlet 3.1 и timeout
    #39349012
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tivakможет спецификация предлагает какое-то стандартное решения для этого?
нужно в паре решать с клиентом.
Он ведь тоже может одной строкой))
Код: java
1.
$.ajaxSetup({timeout:500});
...
Рейтинг: 0 / 0
Servlet 3.1 и timeout
    #39349015
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tivakесли запрос не успели за это время обработать, то слать стандартный ответ.
может сразу асинхронный ответ? Чтоб не ждал?
Или это теория для школьников?
...
Рейтинг: 0 / 0
Servlet 3.1 и timeout
    #39349043
Tivak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
забыл никКак вариант -
Запрос приходит в сервлет, там тупо разбираете параметры и запускаете асинхронную обработку в неком Future, вызываете блокирующий future.get(timeout), если результата нет - то стандартный ответ, если есть - то выплевываем его
Это получается отдельный пул потоков для обработки + блокировка текущего потока. Не кажется это избыточным?

Petro123Tivakможет спецификация предлагает какое-то стандартное решения для этого?
нужно в паре решать с клиентом.
Он ведь тоже может одной строкой))
Код: java
1.
$.ajaxSetup({timeout:500});


У нас нет доступа к клиенту. но мы точно знаем, что ответ, который придет позже 500 мс не имеет смысла. поэтому коннект можно спокойно закрывать со стандартным ответом.

Petro123Tivakесли запрос не успели за это время обработать, то слать стандартный ответ.
может сразу асинхронный ответ? Чтоб не ждал?
Или это теория для школьников?
Вот этого я не понял.

а про школьников как-то пристыдило немного (((
...
Рейтинг: 0 / 0
Servlet 3.1 и timeout
    #39349053
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TivakУ нас нет доступа к клиенту. но мы точно знаем, что ответ, который придет позже 500 мс не имеет смысла. поэтому коннект можно спокойно закрывать со стандартным ответом.
просто согласовать это с клиентом.
Т.к. вы просто сделает двойную работу. "Не имеет смысла" - это БЛ. А бизнес логику надо согласовать с клиентом.
TivakВот этого я не понял.
сначала расскажите про Не имеет смвсла после 0,5 сек.
TivakНе кажется это избыточным?
можно сделать в фильтре. Там где вызывается сам сервлет.Т.е. перед ним.
навешаете на любой сервлет.
...
Рейтинг: 0 / 0
Servlet 3.1 и timeout
    #39349059
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123можно сделать в фильтре. Там где вызывается сам сервлет.Т.е. перед ним.
навешаете на любой сервлет.

Чем это поможет? Ответ нужен через 500 мс, успела выполниться логика - судесно, нет - слать стандартную ошибку, фильтр тут не при чем
...
Рейтинг: 0 / 0
Servlet 3.1 и timeout
    #39349070
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TivakЭто получается отдельный пул потоков для обработки + блокировка текущего потока. Не кажется это избыточным?
Тут палка о двух концах. Можно сделать либо точно 500ms, либо в один поток. Но с одним потоком у вас нет шансов выдать точно 500ms, потому что за пределами 500ms - нужно распараллеливать. Один поток возвращает отклик, другой доводит запрос до ближайшей точки выхода.
Хотя это можно пропробовать оптимизировать, фоновую задачу вы выполняете тем же потоком что обработал запрос, а вот отклик возвращаете новым потоком только если не успели обработать запрос. Подозреваю что на асинхронных сервлетах можно это провернуть.

Но тут много вопросов уточнять надо. Что именно в эти 500ms происходит? Может у вас там блокирующая работа с БД, которую можно прервать. Тогда можно и в один поток решить, если 500ms не очень строгое требование.

Ещё меня в приципе смущает желание работать с сервлетами при таких своеобразных требованиях. Может работать с более низкоуровнывым API HTTP сервера?
...
Рейтинг: 0 / 0
Servlet 3.1 и timeout
    #39349073
Tivak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

согласовать с клиентом таймауты запроса не всегда возможно. да и странное это решение. клиентов может быть очень много и мы не имеем доступ ко всем клиентам.
про 500 мс. очень простой пример - курс на валютном рынке. если мы отдадим цену позже чем через 500 мс, то эта цена может быть уже не актуальной и лучше в этом случае сказать клиенту "извини", чем вводить в заблуждение ответом через 2-3-4 секунды.
...
Рейтинг: 0 / 0
Servlet 3.1 и timeout
    #39349078
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tivakпро 500 мс. очень простой пример - курс на валютном рынке. если мы отдадим цену позже чем через 500 мс, то эта цена может быть уже не актуальной и лучше в этом случае сказать клиенту "извини", чем вводить в заблуждение ответом через 2-3-4 секунды.
пример хороший. Но почему тогда даты-время нет в ответе курса?
...
Рейтинг: 0 / 0
Servlet 3.1 и timeout
    #39349090
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никЧем это поможет? Ответ нужен через 500 мс,
т.е.
Код: java
1.
chain.doFilter(


должен только 500мс.
//Конечно можно спустить таймер и ответ пониже к БД или туда где тормозит.
Пусть сам решает.
...
Рейтинг: 0 / 0
Servlet 3.1 и timeout
    #39349101
Tivak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczХотя это можно пропробовать оптимизировать, фоновую задачу вы выполняете тем же потоком что обработал запрос, а вот отклик возвращаете новым потоком только если не успели обработать запрос. Подозреваю что на асинхронных сервлетах можно это провернуть.

Вот что-то такое и хочется сделать.
в servlet 3.0 есть механиз timeout и перехват событие при помощи AsyncListener. этот механиз конечно ничего не гарантирует, но делает то что хочется.
в servlet 3.1 я ничего похожего не нашел. придумал пока только отслеживать время от вызова doPost, и если за 500мс onAllDataRead не завершил работу, то передавать в outputStream стандартный ответ и закрывать asyncContext.
Это позволяет нам выполнить до конца onAllDataRead и залогировать результат (для анализа) при этом ответ клиенту мы пошлем не позже 500мс (не или примерно 500 мс)

BlazkowiczНо тут много вопросов уточнять надо. Что именно в эти 500ms происходит? Может у вас там блокирующая работа с БД, которую можно прервать. Тогда можно и в один поток решить, если 500ms не очень строгое требование.

Не будем вдаваться в подробности и пытаться полностью использовать возможности NIO. Произойти может все что угодно, поэтому считаем, что обработка запроса без блокирующих вызовов.

BlazkowiczЕщё меня в приципе смущает желание работать с сервлетами при таких своеобразных требованиях. Может работать с более низкоуровнывым API HTTP сервера?
почему же? сейчас нет необходимости лезть в недра.
сервлеты в данном сучае предоставляют все что необходимо для работы. нужно только понять как править сделать этот таймаут ))
...
Рейтинг: 0 / 0
Servlet 3.1 и timeout
    #39349103
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tivakв servlet 3.1 я ничего похожего не нашел
вмешиваться в работу контейнера типа:
Код: java
1.
this.Destroy()


очень странная задача (от программистов)
IMHO
...
Рейтинг: 0 / 0
Servlet 3.1 и timeout
    #39349108
Tivak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123забыл никЧем это поможет? Ответ нужен через 500 мс,
т.е.
Код: java
1.
chain.doFilter(


должен только 500мс.
//Конечно можно спустить таймер и ответ пониже к БД или туда где тормозит.
Пусть сам решает.
Я подумаю, но в целом решение решение похоже на то что я выше предложил, только на другом уровне.
и этот уровень нам не позволит корректировать время отклика в зависимости от содержимого запрос. пока это не требуется, но есть вероятность, что потребуется )
...
Рейтинг: 0 / 0
Servlet 3.1 и timeout
    #39349109
Tivak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Tivakв servlet 3.1 я ничего похожего не нашел
вмешиваться в работу контейнера типа:
Код: java
1.
this.Destroy()


очень странная задача (от программистов)
IMHO
Вот и не хочется туда вмешиваться. хочется решить все это на уровне сервлета, причем красиво и правильно )))
...
Рейтинг: 0 / 0
Servlet 3.1 и timeout
    #39349111
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tivakв servlet 3.1 я ничего похожего не нашел. придумал пока только отслеживать время от вызова doPost, и если за 500мс onAllDataRead не завершил работу, то передавать в outputStream стандартный ответ и закрывать asyncContext.
посмотрел доку:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
@WebServlet("/MyAsyncTestServlet" asyncSupported=true)
  public class TestServlet extends HttpServlet {
    public void doGet(HttpServletRequest req, HttpServletResponse res) {
      ...
      AsyncContext aCtx = request.startAsync(req, res);
      ScheduledThreadPoolExecutor executor = new ThreadPoolExecutor(10);
      executor.execute(new MyAsyncService(aCtx));
    }
  }


тут обратная задача.
Нужно вывести в ответ Долгую задачу.
А у тебя ответ не интересует).
...
Рейтинг: 0 / 0
Servlet 3.1 и timeout
    #39349112
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tivakпричем красиво
красиво выше сказано:
BlazkowiczЕщё меня в приципе смущает желание работать с сервлетами при таких своеобразных требованиях. Может работать с более низкоуровнывым API HTTP сервера?
...
Рейтинг: 0 / 0
Servlet 3.1 и timeout
    #39349118
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tivak,

Да, в приципе и на синхронных сервлетах должно работать. Идея такая:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
void doPost(Request req, Response resp) {    
    AtomicReference resultHolder = new AtomicReference();
    AtomicBoolean canceled = new AtomicBoolean();
    ScheduledFuture sf = scheduler.schedule(() -> {
          if(resultHolder.get() == null){
                canceled.set(true);
                respondWithTimeout(req, resp);
          }   
    }, 500, MILLISECONDS);
    Result result =  runProcessing(req, canceled);
    sf.cancel(false);
    if(!canceled.get()){
        resultHolder.set(result);
        respond(result);
    }
}



Надо только немного упростить и продумать синхронизацию. Можно ещё CompletableFuture притянуть за уши. Там вроде, что-то уже есть для реализации таймаута.
...
Рейтинг: 0 / 0
Servlet 3.1 и timeout
    #39349122
Tivak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Tivakв servlet 3.1 я ничего похожего не нашел. придумал пока только отслеживать время от вызова doPost, и если за 500мс onAllDataRead не завершил работу, то передавать в outputStream стандартный ответ и закрывать asyncContext.
посмотрел доку:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
@WebServlet("/MyAsyncTestServlet" asyncSupported=true)
  public class TestServlet extends HttpServlet {
    public void doGet(HttpServletRequest req, HttpServletResponse res) {
      ...
      AsyncContext aCtx = request.startAsync(req, res);
      ScheduledThreadPoolExecutor executor = new ThreadPoolExecutor(10);
      executor.execute(new MyAsyncService(aCtx));
    }
  }


тут обратная задача.
Нужно вывести в ответ Долгую задачу.
А у тебя ответ не интересует).
Пока не понял о чем ты
...
Рейтинг: 0 / 0
Servlet 3.1 и timeout
    #39349127
Tivak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczTivak,

Да, в приципе и на синхронных сервлетах должно работать. Идея такая:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
void doPost(Request req, Response resp) {    
    AtomicReference resultHolder = new AtomicReference();
    AtomicBoolean canceled = new AtomicBoolean();
    ScheduledFuture sf = scheduler.schedule(() -> {
          if(resultHolder.get() == null){
                canceled.set(true);
                respondWithTimeout(req, resp);
          }   
    }, 500, MILLISECONDS);
    Result result =  runProcessing(req, canceled);
    sf.cancel(false);
    if(!canceled.get()){
        resultHolder.set(result);
        respond(result);
    }
}



Надо только немного упростить и продумать синхронизацию. Можно ещё CompletableFuture притянуть за уши. Там вроде, что-то уже есть для реализации таймаута.

ну да, примерно об этом я и говорил, только тут видимо sf.cancel(false) лишнее.
Похоже так и придется, раз в спеке 3.1 отказались от таймаутов
...
Рейтинг: 0 / 0
Servlet 3.1 и timeout
    #39349129
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tivak,

А AsyncContext.setTimeout() никак вопрос не решает?
...
Рейтинг: 0 / 0
Servlet 3.1 и timeout
    #39349139
Tivak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczTivak,

А AsyncContext.setTimeout() никак вопрос не решает?

Я тестировал и этот момент меня больше всего бесит в этом.
этот метод от спеки 3.0 и при использовании 3.1 он не работает, так же как и addListener

неужели они не могли эти 2 спеки полностью разнести, чтобы они не пересекались ?!?!?!
извините, крик души...
...
Рейтинг: 0 / 0
Servlet 3.1 и timeout
    #39349141
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tivak,

А точно ли в спеке дело? Может контейнер пошаливает?
...
Рейтинг: 0 / 0
Servlet 3.1 и timeout
    #39349142
Tivak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TivakBlazkowiczTivak,

А AsyncContext.setTimeout() никак вопрос не решает?

Я тестировал и этот момент меня больше всего бесит в этом.
этот метод от спеки 3.0 и при использовании 3.1 он не работает, так же как и addListener

неужели они не могли эти 2 спеки полностью разнести, чтобы они не пересекались ?!?!?!
извините, крик души...

setTimeout и addListener работают при вызове asyncContext.start
...
Рейтинг: 0 / 0
Servlet 3.1 и timeout
    #39349145
Tivak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczTivak,

А точно ли в спеке дело? Может контейнер пошаливает?

интересное предположение. попробую проверить.
...
Рейтинг: 0 / 0
Servlet 3.1 и timeout
    #39349146
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TivakПока не понял о чем ты
я о том что асинхронный сервлет для другой задачи. Не твоей.
Там асинхронный подпроцесс (твой долгий) потом сам отвечает клиенту.
Так понятно?
...
Рейтинг: 0 / 0
Servlet 3.1 и timeout
    #39349149
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
суть метода (не для вас):
авторПосле набора этого адреса в адресной строке браузера, подождите 10 секунд, и вы увидите ответ сервлета.
http://www.studfiles.ru/preview/1701994/page:78/
Удачи аффтару!
...
Рейтинг: 0 / 0
Servlet 3.1 и timeout
    #39349164
Tivak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123TivakПока не понял о чем ты
я о том что асинхронный сервлет для другой задачи. Не твоей.
Там асинхронный подпроцесс (твой долгий) потом сам отвечает клиенту.
Так понятно?
использование асинхронности и время обработки на сервере не связаны напрямую.
Вопрос в том, сколько коннектов хочется держать одновременно и сколько потоков понадобится для их обработки.
...
Рейтинг: 0 / 0
Servlet 3.1 и timeout
    #39349182
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tivakиспользование асинхронности и время обработки на сервере не связаны напрямую.
Я сказал для каких юз-кейсов (ВИ) используется технология.
Перевести?
TivakВопрос в том, сколько коннектов хочется держать одновременно и сколько потоков понадобится для их обработки.
"коннектов" - это слово почему всплыло на второй странице?
...
IMHO вы как программист сами себе придумали задачу.
Покажите ответ на клиента. В каком формате?
...
Рейтинг: 0 / 0
Servlet 3.1 и timeout
    #39349188
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Покажите ответ на клиента. В каком формате?
Код: java
1.
getWriter().println("<h1>60,7</h1>");


Т.к. если вы передаёте JSON или другой формат, то там будет метка времени, и при желании дельта по времени ответа в миллисекундах.
И тогда сабж не имеет смысла.
IMHO
...
Рейтинг: 0 / 0
Servlet 3.1 и timeout
    #39351288
Tivak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Итак, рассказываю, что в итоге сделал
с servlet 3.1 так и не удалось найти нормального решения. Все решения сводились к тому, что приходится запускать обработку в отдельном потоке, а поток контейнера лочить. что само по себе не правильно.
В идеале надо было решение, чтобы запускать обработку в отдельном потоке, а при готовности или таймауте инициировать событие записи. но как это правильно сделать я не нашел.

в итоге откатился к servlet 3.0
проверил работу встроенного механизма timeout на tomcat 9. по моим тестам они ничего не гарантирует, даже приблизительно, при цифрах в 100мс.
Поэтому сделал таймаут при помощи отложенного запуска потока + написал простенький контроль состояния асинхронного контекста.
посмотрим как это себя покажет в будущем.

Жаль что на текущем этапе пришлось отказаться от неблокирующего io
...
Рейтинг: 0 / 0
Servlet 3.1 и timeout
    #39351300
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tivak,
вывод такой, что задача у тебя странная. А не сервлеты.
Tivakс servlet 3.1 так и не удалось найти нормального решения. Все решения сводились к тому, что приходится запускать обработку в отдельном потоке, а поток контейнера лочить. что само по себе не правильно.
В идеале надо было решение, чтобы запускать обработку в отдельном потоке, а при готовности или таймауте инициировать событие записи. но как это правильно сделать я не нашел.
представь себе, что сервлет - это обычный поток А
Значит при старте обычного потока А тебе надо через секундомер(Б) вырубить поток А и вместо него отправить ответ.
Т.е. лезть в контейнер.
Мыши пищали, но ели кактус (с)
...
Рейтинг: 0 / 0
Servlet 3.1 и timeout
    #39351315
Tivak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Tivak,
вывод такой, что задача у тебя странная. А не сервлеты.
Tivakс servlet 3.1 так и не удалось найти нормального решения. Все решения сводились к тому, что приходится запускать обработку в отдельном потоке, а поток контейнера лочить. что само по себе не правильно.
В идеале надо было решение, чтобы запускать обработку в отдельном потоке, а при готовности или таймауте инициировать событие записи. но как это правильно сделать я не нашел.
представь себе, что сервлет - это обычный поток А
Значит при старте обычного потока А тебе надо через секундомер(Б) вырубить поток А и вместо него отправить ответ.
Т.е. лезть в контейнер.
Мыши пищали, но ели кактус (с)

вот не согласен. мне не надо никуда лезть в контейнер. просто или я успел обработать запрос и отдать ответ или не успел обработать запрос и отдал стандартный ответ. не вижу тут вылезание из контейнеров.
почему хотелось использовать именно не блокирующее io? а чтобы не блокировать потоки, в случае проблем при передаче (например).
опять же в идеале потом задача сведется к ожиданию ответов из внешних систем (из бд например или других сервисов). соответственно нам для этого всего не нужен на каждый запрос отдельный поток.
поток нужен только для приема сообщения, формирования запроса к бд, обработки ответа от бд и ответа внешнему клиенту. нет никаких ожиданий.
Но на данный момент это все мечты. К которым надеюсь вернемся в будущем)))
...
Рейтинг: 0 / 0
Servlet 3.1 и timeout
    #39351382
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tivak,
Давай конкретнее.
Выше было про поток А и поток Б.
Это понятно?
...
Рейтинг: 0 / 0
Servlet 3.1 и timeout
    #39352228
Tivak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Tivak,
Давай конкретнее.
Выше было про поток А и поток Б.
Это понятно?

В общих чертах так и получилось.
servlet стартует поток А и отложено стартует поток Б.
если в момент старта потока Б поток А отработал и отправил ответ, то все хорошо, он ничего не делает.
если же поток А все еще работает, то поток Б отправляет ответ клиенту.
Я тут нигде в недра контейнера не залез )))
...
Рейтинг: 0 / 0
Servlet 3.1 и timeout
    #39352233
Tivak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тему можно закрывать )
Решение было найдено и реализовано.
если найду как правильно реализовать задуманное на servlet 3.1 то обязательно отпишусь в этой теме.

Всем спасибо за помощь!!!!
...
Рейтинг: 0 / 0
Servlet 3.1 и timeout
    #39352237
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то я недопонял.
В Servlet API 3.0 есть что-то, чего нет в Servlet API 3.1?
...
Рейтинг: 0 / 0
Servlet 3.1 и timeout
    #39352270
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TivakВ общих чертах так и получилось.
servlet стартует поток А и отложено стартует поток Б.
я говорил, что сервлет САМ - поток А.
А так, счас у тебя 3 потока: А+Б+С
...
Рейтинг: 0 / 0
38 сообщений из 38, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Servlet 3.1 и timeout
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]