И так. Есть проект. Платформа для прохождения различных тестов. Тесты могут быть ограниченны по времени как самим юзером так и дефолтным значением(время в данном случае это промежуток в течении которого юзверь может через форму ответов пробрасывать выбранные варианты ответа). Встал вопрос как реализовать сервис. А именно: Имеется сервис который приняв юзверя и тест создает из внутреннего класса "Таймер" поток который в свою очередь существует на протяжении какого то времени(которое либо задаётся дефолтно либо возьмется из сущности теста как заданный юзверем параметр). Соответственно калькуляция результата может произойти в двух случаях: закончится время или пользователь ответит на все вопросы. НО: надо предусмотреть ситуацию когда Юзер перезашел на страницу и попытался продолжить проходить тест/перепройти по новой пока еще текущий поток существует. Теоретическое решение: создать в сервисе лист потоков который будет самоподчищаться от неактивных потоков и через который будет проверятся "а не начал ли юзверь пытаться проходить тест заново?". И вот тут возник вопрос: Как работают сервисы в Spring? Т.е. один сервис работает со всеми клиентами / под каждого клиента создается свой сервис / под каждую сессию создается свой сервис. Потому что от этого зависит будут ли вообще новые потоки таймера добавляться в лист Сервиса или же будет ситуация когда один сервис не сможет содержать больше одного потока. Как в таком случае следует конструировать задуманное?
Во-первых, для реализации этого функционала потоки вообще не нужны. Достаточно сохранить в базу время начала прохождения теста конкретным пользователем и проверять сколько прошло при каждом обращении к контроллерам. Можно для такой проверки аспект написать. Во-вторых, сервис - это бин. По умолчанию все бины - это синглтоны. Кроме контроллеров MVC, которые создаются для каждого запроса. При желании можно и сервис с областью видимости запроса создать. Только незачем в данном случае.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Здравствуйте, как создать программу со встроенной JVM и нужными библиотеками? Объясните по-подробней или киньте ссылки, где можно посмотретьМожно...