Я использую шаблон Open Session in View для моего приложения jsf / icesfaces.Как обычно, фильтр сервлетов открывает и закрывает все сеансы гибернации в начале и в конце «потока веб-сервера».
Моя проблема сейчас в том, что я использую асинхронные задачи, напримерзагрузка больших списков объектов из базы данных.Поэтому я создаю новый поток «вручную», который выполняет задачу.
Теперь мой вопрос: каков наилучший способ обработки сеансов гибернации для таких асинхронных задач?Должен ли я вручную создавать сеанс в самом потоке или есть что-то вроде фильтра сервлетов также для потоков (что-то, что открывает сеанс, когда поток запускается, и закрывает его, когда он заканчивается)?любые лучшие приметы или тому подобное.Спасибо.
Вот код, который создает поток:
protected static ThreadPoolExecutor threadPool = new ThreadPoolExecutor(5,
15, 50, TimeUnit.SECONDS, new LinkedBlockingQueue(20));
// called by action method of a button
private void asyncLoading() {
SessionRenderer.addCurrentSession(this.renderGroup);
threadPool.execute(new Thread() {
// do the thing to do (...)
}
}