Package nl.b3p.commons.stripes
Class JpaTransactionInterceptor
- java.lang.Object
-
- nl.b3p.commons.stripes.JpaTransactionInterceptor
-
- All Implemented Interfaces:
net.sourceforge.stripes.controller.Interceptor
@Intercepts({ActionBeanResolution,EventHandling,RequestComplete}) public class JpaTransactionInterceptor extends Object implements net.sourceforge.stripes.controller.Interceptor
Interceptor die een transactie start: Indien de ActionBean een Transactional annotatie heeft, na de ActionBeanResolution lifecycle state. De transactie wordt gecommit: Indien de geproduceerde Resolution een attribuut JpaTransactionInterceptor.OPEN_SESSION_IN_VIEW heeft met de waarde Boolean.TRUE, na de RequestComplete state. Zo niet wordt de transactie direct gecommit na de EventHandling state. Let op! Bij open session in view is het niet meer mogelijk om fouten van commit() te tonen omdat de resolution al is uitgevoerd. Het is daarom goed om schrijfacties in ieder geval te flushen of te committen voordat de view wordt uitgevoerd. Na een commit kan dan weer een nieuwe transactie worden gestart voor de view. Indien tijdens het proceed()'en van een state een exception optreedt en er een exception wordt gethrow()'d, wordt een eventuele gestartte transactie gerollback()'d en de exception gerethrowed. Met een parameter van de Transactional annotatie kan worden aangegeven voor welke persistence unit de transactie moet worden gestart. Is deze parameter null dan wordt de default persistence unit (configureerd bij JpaUtilServlet) gebruikt. Let op! Gebruik van de useActionBean tag in view op een bean die een @Transactional annotatie heeft zorgt ervoor dat een eventuele open-session-in-view gesloten wordt na de tag! Bij een closed-session-in-view wordt voor de bean een nieuwe transactie gestart en gecommit.
-
-
Field Summary
Fields Modifier and Type Field Description static String
OPEN_SESSION_IN_VIEW
static String
TRANSACTION_PERSISTENCE_UNIT
-
Constructor Summary
Constructors Constructor Description JpaTransactionInterceptor()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description net.sourceforge.stripes.action.Resolution
intercept(net.sourceforge.stripes.controller.ExecutionContext ctx)
void
setActiveTransactionPersistenceUnit(net.sourceforge.stripes.controller.ExecutionContext ctx, String persistenceUnit)
-
-
-
Field Detail
-
OPEN_SESSION_IN_VIEW
public static final String OPEN_SESSION_IN_VIEW
- See Also:
- Constant Field Values
-
TRANSACTION_PERSISTENCE_UNIT
public static final String TRANSACTION_PERSISTENCE_UNIT
- See Also:
- Constant Field Values
-
-
Method Detail
-
setActiveTransactionPersistenceUnit
public void setActiveTransactionPersistenceUnit(net.sourceforge.stripes.controller.ExecutionContext ctx, String persistenceUnit)
-
-