> the issue is that the Transaction Handling not happening and is rolling


back the transactions on exceptions.




What behaviour do you want/expect?




Rolling back on exception is a feature of using transactions. That's the 
behaviour  that's usually wanted.










—
Sent from Mailbox for iPhone

On Wed, Oct 30, 2013 at 2:11 AM, WPk <[email protected]> wrote:

> Hello,
> We have set up a Camel route using transacted(). The route comprises
> multiple JDBC transactions and we required some kind of transaction
> management to be implemented, we decided to use transacted().
> The route looks like this :
> from("direct:updatebookauthor").tracing()
>                         .transacted("PROPAGATION_REQUIRED")
>                         .convertBodyTo(BookShelf.class)
>                         .enrich("direct:getbookauthor", new
> BookShelfEnrichAggregationStrategy(Action.UPDATE))
>                         .process(new DroolsCommandTransformer<Work>("work",
> Work.class)).to("drools:node/ksession")                     
>                        
> .transform().simple("${body.getValue('work').newContainer}")
>                         .bean(bookShelfRepo, "update")
>                         .choice()
>                                 .when(body().isNotNull())
>                                         .process(new BookCatgProcessor())
>                                         .choice()
>                                                 .when(body().isNotNull())
>                                                         .bean(bookShelfRepo,
> "updateBookDept")
>                                                         .bean(bookShelfRepo,
> "updateBookCategory")
>                                         .end()
>                                         .choice()
>                                                  .when(body().isNull())
>                                                          .process(new
> BookShelfProcessor())
>                                         .end()
>                         .end()
>                         .onException(Exception.class).markRollbackOnly();
> Spring Transaction Policy Bean is created as follows:
>         private void setupTransactionPolicy() {
>                 try{
>                         Context initialContext = new InitialContext();
>                         Context envContext = (Context)
> initialContext.lookup("java:comp/env");
>                         DataSource ds = (DataSource)
> envContext.lookup("jdbc/us/wm/TraitsDs");
>                         DataSourceTransactionManager dsm = new
> org.springframework.jdbc.datasource.DataSourceTransactionManager(ds);
>                         SpringTransactionPolicy stp = new
> org.apache.camel.spring.spi.SpringTransactionPolicy(dsm);
>                        
> stp.setPropagationBehaviorName("PROPAGATION_REQUIRED");
>                         TraitHierarchyRoutes.PROPAGATION_REQUIRED_BEAN =
> stp;
>  
>                 }catch(Exception e){
>                         throw new RuntimeException("Exception while setting
> up spring transaction policy" + e);
>                 }
>         }
>  
> Bean is bound to Camel Registry for referencing in the route.
>  
>                 JndiRegistry registry =
> (JndiRegistry)((PropertyPlaceholderDelegateRegistry)this.getContext().getRegistry()).getRegistry();
>                 registry.bind("PROPAGATION_REQUIRED",
> PROPAGATION_REQUIRED_BEAN);
> And the issue is that the Transaction Handling not happening and is rolling
> back the transactions on exceptions.. We have tried with and with out
> setting the auto commit property to true. Also, we have tried using the
> transacted() alone with out onException&markRollBack. No luck. Please advice
> !
> --
> View this message in context: 
> http://camel.465427.n5.nabble.com/Camel-transacted-route-tp5742362.html
> Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to