| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Работа с сетью > Асинхронная запись данных в базу из jsp |
| Автор: Atum 6.7.2012, 19:31 | ||
| Проблема такая : Есть сайт , есть jsp страница , к которой обращаются пользователи : index.jsp со своим запросом keytext
Есть класс Engine который возвращает некоторую информацию из конечно автомата нужно добавить логирование всех этих запросов от пользователей engine.Logging(keytext) грубо говоря в этой функции должно быть обращение к базе и запись в нее строки . как второй вариант - запись в файл на сервере. Хочется сделать эту операцию фоном ( асинхронно ) чтобы данные писались в базу. Важно что String resp = engine.getFullSearchList(keytext); - код может завершиться раньше чем пройдет транзакция в базу и ответ уже должен увидеть пользователь. как организовать метод Logging(String keytext); |
| Автор: AntonSaburov 9.7.2012, 12:25 |
| Из вопроса не понятно, что и когда должен увидеть пользователь. И зачем engine.Logging(keytext) должен быть асинхронным ? Да и сама идея получения данных прямо на JSP - это моветон. |
| Автор: Atum 9.7.2012, 17:53 | ||
engine.Logging(keytext) - долгая операция вставки в базу с кучей проверок , подсчетов контрольных сумм , хэшей итд ее можно вынести в отдельный класс . почему моветон ? а ля php стиль? Антон, а какой будет тогда java стайл ? пользователь видит результат - чем быстрее будет собрана "страница-ответа" - тем лучше . так как операция Logging - очень долгая - из за своего алгоритма - хочется вынести её в фон ... пример пользователь отправляет запрос : index.jsp?keytext=мир получает ответ страницу данных с кучей текста которую мы получили из конечного автомата реализованного в функции engine.getFullSearchList(keytext); при этом в фоне engine.Logging(keytext) идет работа по анализу того что ввел пользователь , как часто он это вводил , кто еще это вводил (как примеры) насколько этот шаблон можно считать релевантным , частота его использования в автомате , и еще куча разных параметров и проверок, результаты которых после всего и будут записаны в базу. т.е каждый такой запрос пользователя способен полностью перестроить и изменить кучу показателей в базе данных. что не должно сказываться на времени работы и генерации jsp страницы ответа . |
| Автор: AntonSaburov 9.7.2012, 18:03 |
| Обрабаотывать запрос сервлетом, котоырй внутри себя запустит отдельный тред (если брать J2EE 1.6 так там вообще есть асинхронные сервлеты. |
| Автор: Atum 9.7.2012, 18:31 | ||
а разве жизненный цикл JSP не говорит что она превращается в сервлет ? |
| Автор: Atum 10.7.2012, 13:46 | ||
Фактически мой класс Engine engine - и есть контроллер там вся логика и она доступна на любых страницах . а в чем преимущества ReST Web Service ? - что он дает приложению ? |
| Автор: AntonSaburov 10.7.2012, 14:32 | ||
Контроллер чаще всего не содержит логику получения данных. Его задача - переправить запрос на основе параметров, URL прочая тому, кто умеет обработать запрос нужного вида. И уже этот обработчик, собрав данные вызывает тот View, который ему подходит на даный момент. Если на упрощенном варианте - это в какой-то степени стандартизованный запрос к ресурсу на его изменение. Удобство в том, что это HTTP-запрос, который может быть сделан из любого приложения и даже из браузера, что очень удобно. |