![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Atum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 3.10.2008 Репутация: нет Всего: нет |
Проблема такая :
Есть сайт , есть jsp страница , к которой обращаются пользователи : index.jsp со своим запросом keytext
Есть класс Engine который возвращает некоторую информацию из конечно автомата нужно добавить логирование всех этих запросов от пользователей engine.Logging(keytext) грубо говоря в этой функции должно быть обращение к базе и запись в нее строки . как второй вариант - запись в файл на сервере. Хочется сделать эту операцию фоном ( асинхронно ) чтобы данные писались в базу. Важно что String resp = engine.getFullSearchList(keytext); - код может завершиться раньше чем пройдет транзакция в базу и ответ уже должен увидеть пользователь. как организовать метод Logging(String keytext); Это сообщение отредактировал(а) Atum - 6.7.2012, 19:32 |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 2 Всего: 118 |
Из вопроса не понятно, что и когда должен увидеть пользователь.
И зачем engine.Logging(keytext) должен быть асинхронным ? Да и сама идея получения данных прямо на JSP - это моветон. |
|||
|
||||
| Atum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 3.10.2008 Репутация: нет Всего: нет |
engine.Logging(keytext) - долгая операция вставки в базу с кучей проверок , подсчетов контрольных сумм , хэшей итд ее можно вынести в отдельный класс . почему моветон ? а ля php стиль? Антон, а какой будет тогда java стайл ? пользователь видит результат - чем быстрее будет собрана "страница-ответа" - тем лучше . так как операция Logging - очень долгая - из за своего алгоритма - хочется вынести её в фон ... пример пользователь отправляет запрос : index.jsp?keytext=мир получает ответ страницу данных с кучей текста которую мы получили из конечного автомата реализованного в функции engine.getFullSearchList(keytext); при этом в фоне engine.Logging(keytext) идет работа по анализу того что ввел пользователь , как часто он это вводил , кто еще это вводил (как примеры) насколько этот шаблон можно считать релевантным , частота его использования в автомате , и еще куча разных параметров и проверок, результаты которых после всего и будут записаны в базу. т.е каждый такой запрос пользователя способен полностью перестроить и изменить кучу показателей в базе данных. что не должно сказываться на времени работы и генерации jsp страницы ответа . |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 2 Всего: 118 |
Обрабаотывать запрос сервлетом, котоырй внутри себя запустит отдельный тред (если брать J2EE 1.6 так там вообще есть асинхронные сервлеты.
|
|||
|
||||
| Atum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 3.10.2008 Репутация: нет Всего: нет |
а разве жизненный цикл JSP не говорит что она превращается в сервлет ? |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 2 Всего: 118 |
Да, превращается. Но в нормальном проектировании используется шаблон MVC. Идея простая - сервлет (Controller) получает запрос, собирает все данные (Model)(заодно может запустить поток) и передает их в JSP (View), которая предназначена ТОЛЬКО для отображения данных. Не надо в нее помещать логику получения этих данных. Почему это хорошо ? Ну для примера - можно использовать разные JSP дл яотображения. Например версия для обычного сайта и для мобильного. Или вообще отдавать в сервлете не HTML, а JSON. По сути вы на халяву можете получить уже готовый ReST Web Service. Но сами данные получаются в одном месте, а не на пяти версиях страниц. Вы получаете более гибкую структуру, более легкую в сопровождении и расширении. Именно исходя из такого рода соображений PHP-стиль с макаронным кодом на одной странице считается очень плохим решением. Кстати на сегодня и PHP стараются использовать MVC. |
|||
|
||||
| Atum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 3.10.2008 Репутация: нет Всего: нет |
Фактически мой класс Engine engine - и есть контроллер там вся логика и она доступна на любых страницах . а в чем преимущества ReST Web Service ? - что он дает приложению ? |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 2 Всего: 118 |
Контроллер чаще всего не содержит логику получения данных. Его задача - переправить запрос на основе параметров, URL прочая тому, кто умеет обработать запрос нужного вида. И уже этот обработчик, собрав данные вызывает тот View, который ему подходит на даный момент. Если на упрощенном варианте - это в какой-то степени стандартизованный запрос к ресурсу на его изменение. Удобство в том, что это HTTP-запрос, который может быть сделан из любого приложения и даже из браузера, что очень удобно. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Работа с сетью | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |