Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> паралельный запуск, spring controller 
:(
    Опции темы
sergioK1
Дата 13.9.2015, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 416
Регистрация: 30.1.2011

Репутация: нет
Всего: нет



Имеется sрring conroller 


Код

 @RequestMapping("/matlab")
    public Object startMатab(Active  game) {


Задача запустить работу над этим обьектом в отдельном таске, поесть 
конторолер уже отработал а работа над обьектом еще может продолжаться ,
Я обдумываю вариант запустить отдельный процесс и ему через pipe передать 
этот обьект , Я не могу сообразить как создать поток чтобы он гарантированно продолжал работать , после окончания работы контролера , 
Какие есть варианты ? 
PM MAIL   Вверх
CPlusPlusFAN
Дата 13.9.2015, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 315
Регистрация: 1.11.2005
Где: Воронеж

Репутация: нет
Всего: нет



Вернуть из контроллера Future?
PM MAIL ICQ Jabber   Вверх
Samotnik
Дата 13.9.2015, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 5
Всего: 191



Как вариант: В контролере создавай новый поток или сколько тебе нужно. Передавай туда объекты и спокойно обрабатывай. Создай второй контроллер, который будет возвращать результат по некому "айди запроса" который ты сам можешь генерировать.

Добавлено через 1 минуту и 36 секунд
т.е. фактически первый контроллер возвращает айди запроса, он берет объекты на обработку, а некий веб сервис типо getResult будет тебе по айди запроса возвращать результат и статус. 
PM MAIL   Вверх
d_k
Дата 14.9.2015, 08:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 20.7.2004

Репутация: 1
Всего: 1



нехорошо на вебе порождать потоки самому. Через механизм очередей и фоновый обработчик было бы интереснее
PM MAIL   Вверх
Samotnik
Дата 14.9.2015, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 5
Всего: 191



d_k,  smile Значит весь механизм асинхронизации был придуман просто так?
PM MAIL   Вверх
d_k
Дата 14.9.2015, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 20.7.2004

Репутация: 1
Всего: 1



Судя по RequestMapping - используется спринг, спека EE не при чем. Хотя даже в ее рамках ИМХО, порождать потоки которые не управляются контейнером - не айс. Ранее сан еще предостерегал разработчиков от порождения потоков на уровне EJB, сейчас дали послабление через конкарренси апи, а толку то? попытка угнаться за тем же самым спрингом?

я не настаиваю, но старый и хорошо зарекомендовавший подход возложить обработку на фоновый процесс через очереди, а веб оставить для хорошего респонс тайма кажется привлекательней. Да и ресурсы сервера не тратятся и управлять обработкой проще настроив пулы обработчиков. В решении в лоб (порождать экзекъюторы на вебе), можно гарантированно положить сервер примитивным ДДОСом, если операция обработки сообщения занимает приличное время память и цпу.

ЗЫ: спека спекой, но под конкретную задачу - конкретный рецепт. панацеи нет)))
ЗЗЫ: холиварить не собирался, просто высказал свое мнение
PM MAIL   Вверх
leniviy
Дата 14.9.2015, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 552
Регистрация: 8.2.2003
Где: Спб

Репутация: 1
Всего: 5



А нельзя использовать аякс? Пусть сервлет выполняется синхронно.

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
mailer
Дата 14.9.2015, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 20.10.2010

Репутация: нет
Всего: нет



Вот как это делается в Спринге

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
Samotnik
Дата 14.9.2015, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 5
Всего: 191



d_k, спринг конечно крут, но я дал ссылку на Java, потому что это всё таки Java smile А не фрэймворк (хоть и один из мощнейших в мире) И если отцы основатели так сказали делать, значит это делать можно. Опять же, пример привел из своей практики, буквально пол года назад на веб приложении, на рест сервисах, делал многопоточную обратбоку. Полгода работает - норм. Вообще, во всех больших ВЕБ приложения я видел многопоточность. При разумном использовании (обрабатывать кол-во потоков и кол-во памяти, дабы не положить сервак), всё очень даже работоспособно. Не знаю на чем это написанно, предположим на Жаве, слать запросы на сотни продавцов в одном потоке глупо, юзер ждал бы результаты минут пять.
Полностью согласен с 
Цитата(d_k @  14.9.2015,  10:18 Найти цитируемый пост)
спека спекой, но под конкретную задачу - конкретный рецепт. панацеи нет)))

Задача размана изначально, поэтому предложил из опыта. Будут детали вопроса, можно думать дальше. 
PM MAIL   Вверх
CPlusPlusFAN
Дата 14.9.2015, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 315
Регистрация: 1.11.2005
Где: Воронеж

Репутация: нет
Всего: нет



Цитата(mailer @  14.9.2015,  11:32 Найти цитируемый пост)
Вот как это делается в Спринге

Ну я это с самого начала предложил. Спринг умеет это делать - пускай делает.
PM MAIL ICQ Jabber   Вверх
sergioK1
Дата 17.9.2015, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 416
Регистрация: 30.1.2011

Репутация: нет
Всего: нет



Цитата(Samotnik @ 14.9.2015,  12:36)
d_k, спринг конечно крут, но я дал ссылку на Java, потому что это всё таки Java smile А не фрэймворк (хоть и один из мощнейших в мире) И если отцы основатели так сказали делать, значит это делать можно. Опять же, пример привел из своей практики, буквально пол года назад на веб приложении, на рест сервисах, делал многопоточную обратбоку. Полгода работает - норм. Вообще, во всех больших ВЕБ приложения я видел многопоточность. При разумном использовании (обрабатывать кол-во потоков и кол-во памяти, дабы не положить сервак), всё очень даже работоспособно.

Cпринг применяют там где есть аспекты, тут аспектов нет,
ты делаешь так ?
Код

 Runnable myRunnable = new Runnable(){

     public void run(){
        System.out.println("Runnable running");
     }
   }


или его разновидности ? 
d_k видимо имеет ввиду пользовать конфигурацию томката через 
JNDI. Я пока не могу найти пример как жто сделать .
PM MAIL   Вверх
sergioK1
Дата 16.4.2016, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 416
Регистрация: 30.1.2011

Репутация: нет
Всего: нет



Цитата(Samotnik @ 14.9.2015,  12:36)
Задача размана изначально, поэтому предложил из опыта. Будут детали вопроса, можно думать дальше.

задача проста как три копейки  smile 
Все что нужно это отсылать данные клиенту каждые пару секунд,
Сервис с обращением к бд сделать в потоке не проблема 

проблема в том что есть контолер , 
Код

@RequestMapping("/getGames")
        public String hello(int eventId) {
        Games[] games=  scannerService.getGames(eventId);
        Data string = ConverToJson(games);
            return "result";
    }


нужно из него возвращать результат каждые 3-5секунд тоесть 
но response больше одного раза отправить нельзя , 
можно переделать на WebSockets но мне лень менять код клиента , как это переделать с минимумом лишних телодвижений ? 


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.1512 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.