Мое веб-приложение (Spring3 + Hibernate3) всегда работало со службами, помеченными классом @ Transactional и такой конфигурацией:
<tx:annotation-driven transaction-manager="transactionManager" />
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="mySessionFactory" />
</bean>
Сейчас ... Я в Google AppEngine. По какой-то неприятной причине я пока не знаю, @Transactional не работает. Он использует некоторый класс в javax.naming, который не входит в белый список. Это заканчивается:
Ошибка создания бина с именем 'mySessionFactory': постобработка
объект FactoryBean не выполнен; вложенное исключение
java.lang.SecurityException: невозможно получить членов для класса
org.hibernate.impl.SessionFactoryImpl
Пожалуйста, не спрашивайте меня, почему ....: - \
Использование Spring HibernateTemplate вместо моего дао (который использует raw factory factory) решило проблему, но я знаю, что она немного устарела.
Итак, я хочу попробовать использовать ручные транзакции старого стиля. Вопросы:
- где? Я хотел бы сохранить транзакции на уровне сервиса.
- как?