Лучшая конфигурация Tomcat6 JNDI + Hibernate для поддержки сеансов / транзакций - PullRequest
0 голосов
/ 31 марта 2010

Цитата из официальных документов hib:

Начиная с версии 3.0.1, Hibernate добавил метод SessionFactory.getCurrentSession (). Первоначально предполагалось использование транзакций JTA, где транзакция JTA определяла как область действия, так и контекст текущего сеанса. Учитывая зрелость многочисленных автономных реализаций JTA TransactionManager, большинство, если не все приложения, должны использовать управление транзакциями JTA, независимо от того, развернуты они в контейнере J2EE или нет. Исходя из этого, JTA-контекстные сеансы - это все, что вам нужно. конец цитаты

Я использую tomcat6 в качестве контейнера сервлета, и мне нужно интегрировать Hibernate 3.2 в проект.

Я нашел документ о том, как настроить поиск SessionFactory через JNDI, хотя он не работает должным образом.

Цитата: Hibernate работает в любой среде, которая использует JTA, фактически мы рекомендуем использовать JTA, когда это возможно, поскольку это стандартный интерфейс транзакций Java. Конец цитаты.

В конфигурации hibernate я указываю current_session_context_class = jta

и теперь я получаю сообщение об ошибке «Не указан TransactionManagerLookup».

Проблема в том, что Tomcat не поддерживает JTA, и чтобы он работал, если я правильно понимаю, вам нужно добавить JOTM или другую библиотеку в Tomcat.

Но согласно цитате рекомендуется использовать JTA.

Что вы можете порекомендовать в этой ситуации?

Ответы [ 2 ]

1 голос
/ 31 марта 2010

Ваш выбор довольно ясен:

  1. Либо перейти на контейнер сервлетов, который поддерживает JTA
  2. Найдите другой механизм транзакций, отличный от JTA, например, программный контроль транзакций самостоятельно.
0 голосов
/ 31 марта 2010

Что вы можете порекомендовать в этой ситуации?

Обойтись без JTA и использовать шаблон Open Session In View для обработки сеанса.

...