可以在Spring容器之外使用Spring框架的@Transactional支持。參考文檔是關於AspectJ方面的章節。我試圖在我的Wicket應用程序中使用它,但沒有正面結果。Wicket with Spring declarative transaction
應用程序的context.xml:
<tx:annotation-driven transaction-manager="transactionManager" mode="aspectj" />
<context:annotation-config />
<context:component-scan base-package="com.wicket.app"/>
<context:spring-configured />
<bean id="annotationTransactionAspect" factory-method="aspectOf"
class="org.springframework.transaction.aspectj.AnnotationTransactionAspect">
<property name="transactionManager" ref="transactionManager"></property>
</bean>
在由@Configurable註解自己的狀態類,我有:
@Transactional
public void process(IFormSubmittingComponent submittingComponent) {
super.process(submittingComponent);
getDao().getEntityManager().flush();
}
堆棧跟蹤:
org.apache.openjpa.persistence.TransactionRequiredException: Can only perform operation while a transaction is active.
是的,我的錯。這個簡單的解決方案更好。沒有必要誇大。 – nablik 2010-01-13 08:16:59