Транзакции в Spring / Hibernate / appfuse
Как продолжение вопроса здесь: Spring 2.0 Аннотации и муравей
Мы смогли заставить аннотации работать (@Transactional), а также попытались вручную кодировать транзакцию.
В обоих случаях у нас возникают некоторые проблемы. Это проект appfuse 1.9.4, где мы вручную обновились до более нового проекта Hibernate. Это использует Spring 2.0.
Что я хотел бы сделать, это обернуть весь веб-сервис в базу данных "Транзакция", чтобы весь "вызов" был атомарным. Я понимаю, что самый простой способ сделать это с помощью @Transactional?
Для этого мы добавили в наш класс:
import org.springframework.transaction.annotation.Transactional;
И затем, рядом с методом (который является общедоступным), мы сделали:
@Transactional (readOnly = false, rollbackFor=Exception.class)
public List processEmployees(List employees){
....
}
В applicationContext-hibernate.xml я добавил:
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>
Теперь, когда я запускаю Tomcat, я получаю эту прекрасную ошибку:
[Scheduler] 2011-08-22 12:57:03,032 ERROR [main] ContextLoader.initWebApplicationContext(205) | Context initialization failed
org.springframework.beans.factory.BeanDefinitionStoreException: Line 153 in XML document from ServletContext resource [/WEB-INF/applicationContext-hibernate.xml] is invalid; nested exception is org.xml.sax.SAXParseException: The prefix "tx" for element "tx:annotation-driven" is not bound.
Caused by:
org.xml.sax.SAXParseException: The prefix "tx" for element "tx:annotation-driven" is not bound.
Мы используем Spring 2.0, но не настроили AOP.
Есть идеи?
В качестве альтернативы, я счастлив сделать это с Transaction.commit(), но при таком маршруте выдается сообщение о том, что транзакция никогда не запускается.
Спасибо!
1 ответ
Вы не определили пространство имен "tx" в вашем applicationContext-hibernate.xml
, Таким образом, синтаксический анализатор XML не может идентифицировать элемент.