Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Фильтр на окончание запроса веб-станицы / 5 сообщений из 5, страница 1 из 1
08.12.2005, 13:50
    #33425063
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтр на окончание запроса веб-станицы
Читаю Hibernate Reference и методы сохранения сессий, сказано (в 20.1.4. Initializing collections and proxies):

In a web-based application, a servlet filter can be used to close the Session only at the very end of a user request, once the rendering of the view is complete (the Open Session in View pattern).

Хорошо, но если я опишу фильтр в web.xml, то он сработает на начало request'а, а потом мне потребуется работа с объектами в классах, сервлетах, JSP. Только после всего этого я могу закрывать hibernate-сессию. Как мне поймать момент, когда уже все сделано и я имею право на ее закрытие?
...
Рейтинг: 0 / 0
08.12.2005, 14:25
    #33425185
А.Грасоff™
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтр на окончание запроса веб-станицы
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
// some filter ...
 public   void  doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)  throws  IOException, ServletException {

  filterChain.doFilter(request, response);

  // а здесь уже делаешь то, что тебе надо

}
// ...

PS
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
 package  com.web.filters;

 import  javax.servlet.*;
 import  javax.servlet.http.*;
 import  java.io.*;

 public   class  SomeFilter  implements  Filter {
   private   static   int  i =  0 ;
   public   void  init(FilterConfig filterConfig)  throws  ServletException {
  }

   public   void  doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)  throws  IOException, ServletException {
    System.out.println(++i);
    filterChain.doFilter(request, response);
    System.out.println(++i);
  }

   public   void  destroy() {
  }
}

» тынц «
...
Рейтинг: 0 / 0
08.12.2005, 14:31
    #33425219
М.Голованов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтр на окончание запроса веб-станицы
Только если вы собираетесь открывать сессию перед началом обработки запроса, а по окончании запроса закрывать сессию, не забудьте отловить исключения в filterChain.doFilter(request, response); сессию надо закрыть независимо от результата doFilter.

А вообще-то не лучший вариант... вы что же, на каждый запрос будете сессию открывать?... а если для каких-то запросов она не нужна?
...
Рейтинг: 0 / 0
08.12.2005, 14:45
    #33425256
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтр на окончание запроса веб-станицы
Ага, спасибо, т.е. фильтрами можно окаймить любой запрос.

Открывать сессию в фильтре необязательно, пусть код дергает что-то наподобе HibernateUtil.currentSession(), который откроет сессию и где-то ее сохранит. А фильтр уже проверит, есть ли этом "где-то" есть сессия, и закроет ее при обнаружении.
...
Рейтинг: 0 / 0
08.12.2005, 18:05
    #33425837
коты
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтр на окончание запроса веб-станицы
http://caveatemptor.hibernate.org/

рекомендую отсюда взять код, перед тем хорошо разобравшись, как это работает.

just another freak in the Freak Kingdom
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Фильтр на окончание запроса веб-станицы / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]