Class 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.
    • Constructor Detail

      • JpaTransactionInterceptor

        public JpaTransactionInterceptor()
    • Method Detail

      • setActiveTransactionPersistenceUnit

        public void setActiveTransactionPersistenceUnit​(net.sourceforge.stripes.controller.ExecutionContext ctx,
                                                        String persistenceUnit)
      • intercept

        public net.sourceforge.stripes.action.Resolution intercept​(net.sourceforge.stripes.controller.ExecutionContext ctx)
                                                            throws Exception
        Specified by:
        intercept in interface net.sourceforge.stripes.controller.Interceptor
        Throws:
        Exception