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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Асинхронная запись данных в базу из jsp, Асинхронно записать данные в базу 
:(
    Опции темы
Atum
Дата 6.7.2012, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Проблема такая : 

Есть сайт , есть jsp  страница , к которой обращаются пользователи : 

index.jsp  со своим запросом keytext 

 
Код


<%@page contentType="text/html" pageEncoding="windows-1251"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
        <title>JSP Page</title>
    </head>
    <body>

<%

    String keytext = request.getParameter("keytext");   

      Engine engine = new Engine();
 
     // engine.Logging(keytext);
 
      String  resp = engine.getFullSearchList(keytext);

     out.print(resp);

    
%>
        
    </body>
</html>



 
Есть класс Engine  который возвращает некоторую информацию из конечно автомата 

нужно добавить логирование всех этих запросов от  пользователей 

engine.Logging(keytext)

грубо говоря в этой функции должно быть обращение к базе и запись в нее строки .

как второй вариант - запись в файл на сервере.

Хочется сделать эту операцию  фоном  ( асинхронно )   чтобы данные писались в базу.

Важно что 
String  resp = engine.getFullSearchList(keytext); - код может завершиться раньше чем пройдет транзакция в базу и ответ уже должен увидеть пользователь.


как организовать метод  Logging(String keytext);






Это сообщение отредактировал(а) Atum - 6.7.2012, 19:32
PM MAIL   Вверх
AntonSaburov
Дата 9.7.2012, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



Из вопроса не понятно, что и когда должен увидеть пользователь.

И зачем engine.Logging(keytext) должен быть асинхронным ?

Да и сама идея получения данных прямо на JSP - это моветон.
PM MAIL WWW ICQ   Вверх
Atum
Дата 9.7.2012, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(AntonSaburov @ 9.7.2012,  12:25)
Из вопроса не понятно, что и когда должен увидеть пользователь.

И зачем engine.Logging(keytext) должен быть асинхронным ?

Да и сама идея получения данных прямо на JSP - это моветон.

engine.Logging(keytext) -  долгая операция вставки в базу с кучей проверок , подсчетов  контрольных сумм ,  хэшей итд 

ее можно  вынести в отдельный класс . 

почему моветон ?  а ля php  стиль? 

Антон, а какой будет тогда java стайл ? 


пользователь видит результат  - чем быстрее  будет собрана "страница-ответа"  -  тем лучше . 

так как операция Logging - очень долгая - из за своего алгоритма  - хочется вынести её в фон ...

пример

пользователь отправляет запрос : 

index.jsp?keytext=мир

получает ответ 

страницу данных с кучей текста которую мы получили из конечного автомата реализованного в функции 

engine.getFullSearchList(keytext);


при этом в фоне engine.Logging(keytext) идет работа по анализу того что ввел пользователь , как часто он это вводил , кто еще это вводил 
(как примеры) насколько этот шаблон можно считать  релевантным , частота его использования в автомате , и еще куча разных параметров и проверок, 

результаты которых после всего и будут записаны в базу.


т.е каждый такой запрос пользователя способен полностью перестроить и изменить кучу показателей в базе данных. 

что не должно сказываться на времени работы и генерации jsp  страницы ответа .



PM MAIL   Вверх
AntonSaburov
Дата 9.7.2012, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



Обрабаотывать запрос сервлетом, котоырй внутри себя запустит отдельный тред (если брать J2EE 1.6 так там вообще есть асинхронные сервлеты.
PM MAIL WWW ICQ   Вверх
Atum
Дата 9.7.2012, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(AntonSaburov @ 9.7.2012,  18:03)
Обрабаотывать запрос сервлетом, котоырй внутри себя запустит отдельный тред (если брать J2EE 1.6 так там вообще есть асинхронные сервлеты.

а разве жизненный цикл JSP не  говорит что она превращается в сервлет ?
PM MAIL   Вверх
AntonSaburov
Дата 10.7.2012, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



Цитата(Atum @  9.7.2012,  18:31 Найти цитируемый пост)
а разве жизненный цикл JSP не  говорит что она превращается в сервлет ? 

Да, превращается. Но в нормальном проектировании используется шаблон MVC. Идея простая - сервлет (Controller) получает запрос, собирает все данные (Model)(заодно может запустить поток) и передает их в JSP (View), которая предназначена ТОЛЬКО для отображения данных. Не надо в нее помещать логику получения этих данных.
Почему это хорошо ? Ну для примера - можно использовать разные JSP дл яотображения. Например версия для обычного сайта и для мобильного. Или вообще отдавать в сервлете не HTML, а JSON. По сути вы на халяву можете получить уже готовый ReST Web Service. Но сами данные получаются в одном месте, а не на пяти версиях страниц. Вы получаете более гибкую структуру, более легкую в сопровождении и расширении.

Именно исходя из такого рода соображений PHP-стиль с макаронным кодом на одной странице считается очень плохим решением. Кстати на сегодня и PHP стараются использовать MVC.
PM MAIL WWW ICQ   Вверх
Atum
Дата 10.7.2012, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(AntonSaburov @ 10.7.2012,  11:07)
готовый ReST Web Service

Фактически мой класс Engine engine -  и есть контроллер  там вся логика и она доступна на любых страницах .

а в чем преимущества ReST Web Service ?  - что он дает приложению ?
PM MAIL   Вверх
AntonSaburov
Дата 10.7.2012, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



Цитата(Atum @  10.7.2012,  13:46 Найти цитируемый пост)
Фактически мой класс Engine engine -  и есть контроллер  там вся логика и она доступна на любых страницах .

Контроллер чаще всего не содержит логику получения данных. Его задача - переправить запрос на основе параметров, URL  прочая тому, кто умеет обработать запрос нужного вида. И уже этот обработчик, собрав данные вызывает тот View, который ему подходит на даный момент.

Цитата(Atum @  10.7.2012,  13:46 Найти цитируемый пост)
а в чем преимущества ReST Web Service ?  - что он дает приложению ?

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

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

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


 




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


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

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