Il est possible d'utiliser le support @Transactional de Spring Framework en dehors d'un conteneur Spring. Dans la documentation de référence se trouve le chapitre sur AspectJ. J'essaie de l'utiliser dans mon application de guichet, mais sans résultat positif.Wicket avec transaction déclarative Spring
application 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>
Dans ma classe de formulaire annoté par @Configurable, j'ai:
@Transactional
public void process(IFormSubmittingComponent submittingComponent) {
super.process(submittingComponent);
getDao().getEntityManager().flush();
}
Trace de la pile:
org.apache.openjpa.persistence.TransactionRequiredException: Can only perform operation while a transaction is active.
Oui, ma faute. Cette solution simple est meilleure. Il n'y a pas besoin d'exagérer. – nablik