|
Модераторы: LSD, AntonSaburov |
|
sergioK1 |
|
|||
Опытный Профиль Группа: Участник Сообщений: 416 Регистрация: 30.1.2011 Репутация: нет Всего: нет |
Имеется sрring conroller
Задача запустить работу над этим обьектом в отдельном таске, поесть конторолер уже отработал а работа над обьектом еще может продолжаться , Я обдумываю вариант запустить отдельный процесс и ему через pipe передать этот обьект , Я не могу сообразить как создать поток чтобы он гарантированно продолжал работать , после окончания работы контролера , Какие есть варианты ? |
|||
|
||||
CPlusPlusFAN |
|
|||
Опытный Профиль Группа: Участник Сообщений: 315 Регистрация: 1.11.2005 Где: Воронеж Репутация: нет Всего: нет |
Вернуть из контроллера Future?
|
|||
|
||||
Samotnik |
|
|||
Super star ! Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: 5 Всего: 191 |
Как вариант: В контролере создавай новый поток или сколько тебе нужно. Передавай туда объекты и спокойно обрабатывай. Создай второй контроллер, который будет возвращать результат по некому "айди запроса" который ты сам можешь генерировать.
Добавлено через 1 минуту и 36 секунд т.е. фактически первый контроллер возвращает айди запроса, он берет объекты на обработку, а некий веб сервис типо getResult будет тебе по айди запроса возвращать результат и статус. |
|||
|
||||
d_k |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 76 Регистрация: 20.7.2004 Репутация: 1 Всего: 1 |
нехорошо на вебе порождать потоки самому. Через механизм очередей и фоновый обработчик было бы интереснее
|
|||
|
||||
Samotnik |
|
|||
Super star ! Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: 5 Всего: 191 |
d_k, Значит весь механизм асинхронизации был придуман просто так?
|
|||
|
||||
d_k |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 76 Регистрация: 20.7.2004 Репутация: 1 Всего: 1 |
Судя по RequestMapping - используется спринг, спека EE не при чем. Хотя даже в ее рамках ИМХО, порождать потоки которые не управляются контейнером - не айс. Ранее сан еще предостерегал разработчиков от порождения потоков на уровне EJB, сейчас дали послабление через конкарренси апи, а толку то? попытка угнаться за тем же самым спрингом?
я не настаиваю, но старый и хорошо зарекомендовавший подход возложить обработку на фоновый процесс через очереди, а веб оставить для хорошего респонс тайма кажется привлекательней. Да и ресурсы сервера не тратятся и управлять обработкой проще настроив пулы обработчиков. В решении в лоб (порождать экзекъюторы на вебе), можно гарантированно положить сервер примитивным ДДОСом, если операция обработки сообщения занимает приличное время память и цпу. ЗЫ: спека спекой, но под конкретную задачу - конкретный рецепт. панацеи нет))) ЗЗЫ: холиварить не собирался, просто высказал свое мнение |
|||
|
||||
leniviy |
|
|||
Опытный Профиль Группа: Участник Сообщений: 552 Регистрация: 8.2.2003 Где: Спб Репутация: 1 Всего: 5 |
А нельзя использовать аякс? Пусть сервлет выполняется синхронно.
Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
mailer |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 20.10.2010 Репутация: нет Всего: нет |
||||
|
||||
Samotnik |
|
|||
Super star ! Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: 5 Всего: 191 |
d_k, спринг конечно крут, но я дал ссылку на Java, потому что это всё таки Java А не фрэймворк (хоть и один из мощнейших в мире) И если отцы основатели так сказали делать, значит это делать можно. Опять же, пример привел из своей практики, буквально пол года назад на веб приложении, на рест сервисах, делал многопоточную обратбоку. Полгода работает - норм. Вообще, во всех больших ВЕБ приложения я видел многопоточность. При разумном использовании (обрабатывать кол-во потоков и кол-во памяти, дабы не положить сервак), всё очень даже работоспособно. Не знаю на чем это написанно, предположим на Жаве, слать запросы на сотни продавцов в одном потоке глупо, юзер ждал бы результаты минут пять.
Полностью согласен с
Задача размана изначально, поэтому предложил из опыта. Будут детали вопроса, можно думать дальше. |
|||
|
||||
CPlusPlusFAN |
|
|||
Опытный Профиль Группа: Участник Сообщений: 315 Регистрация: 1.11.2005 Где: Воронеж Репутация: нет Всего: нет |
||||
|
||||
sergioK1 |
|
||||
Опытный Профиль Группа: Участник Сообщений: 416 Регистрация: 30.1.2011 Репутация: нет Всего: нет |
Cпринг применяют там где есть аспекты, тут аспектов нет, ты делаешь так ?
или его разновидности ? d_k видимо имеет ввиду пользовать конфигурацию томката через JNDI. Я пока не могу найти пример как жто сделать . |
||||
|
|||||
sergioK1 |
|
||||
Опытный Профиль Группа: Участник Сообщений: 416 Регистрация: 30.1.2011 Репутация: нет Всего: нет |
задача проста как три копейки Все что нужно это отсылать данные клиенту каждые пару секунд, Сервис с обращением к бд сделать в потоке не проблема проблема в том что есть контолер ,
нужно из него возвращать результат каждые 3-5секунд тоесть но response больше одного раза отправить нельзя , можно переделать на WebSockets но мне лень менять код клиента , как это переделать с минимумом лишних телодвижений ? |
||||
|
|||||
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |