Thanks a lot ! Indeed, in the 1.x branch, this is hardcoded? But no more in the trunk.
Raphaël 2010/4/20 Rafal Rusin <[email protected]> > 2010/4/20 Raphaël Delaporte <[email protected]>: > > Hi, > > > > Ok that's clearer for me ! > > > > 1. Is there a way to explicitly commit the transaction ? > > In Oracle BPEL world, there is the checkpoint java embedded for example, > > which forces the transaction to be commited. > > There's no explicit way to do this. However you can achieve this by > adding blocking activity, like > <wait><for>'PT1S'</for></wait> > > > > > > > 2. Is the transaction XA ? Is it possible to add some custom JMS adapter, > > which uses the same tx for example ? > > Yes, transactions can be XA. But ODE code does begin transaction for > each incoming exchange: > > src/main/java/org/apache/ode/axis2/ODEService.java > public void onAxisMessageExchange(MessageContext msgContext, > MessageContext outMsgContext, SOAPFactory soapFactory) > throws AxisFault { > boolean success = true; > MyRoleMessageExchange odeMex = null; > Future responseFuture = null; > try { > _txManager.begin(); > if (__log.isDebugEnabled()) __log.debug("Starting > transaction."); > > So I think this won't connect to existing JMS transaction. Neither for > JBI distro. > > > > > > > I like this tx approach. I think one big transaction is harder to manage > > because of calling webservices ... Therefore, commiting on each wait or > > receive is OK. > > Yes, this has bright sides too. > > > > > Thank you very much. > > Raphaël > > > > > > > > 2010/4/20 Rafal Rusin <[email protected]> > > > >> Hello, > >> > >> 2010/4/19 Raphaël Delaporte <[email protected]>: > >> > Hi all, > >> > > >> > I'd like to know how transactions are used in the ODE engine. > >> > > >> > I know how it works in Oracle BPEL (TX are created and commited on > >> > dehydration activity, like Receive, Wait, OnMessage, etc...) > >> > But how does it work for ODE ? > >> > > >> > For instance, if I have an onMessage activity, is a new TX started > when I > >> > received the callback ? > >> > And if so, when is it commited ? > >> > > >> > Thanks a lot for your help ! > >> > >> ODE has two layers for transactions. First is for transport and second > >> for state transitions (so called JOBs). > >> When you invoke request to ODE, first layer stores MEX (message > exchange) > >> to > >> DB and registers persistent JOB for processing. That's 1st TX. > >> Then this job is executed in state transitions layer and calculates > >> response - 2nd TX. > >> Next, such response is passed to transport layer and response is sent > >> back - 3rd TX. > >> > >> State transition transaction (JOB) is executed until blocking activity > >> is encountered (such as WAIT or RECEIVE or 2 way INVOKE). > >> So if you have: > >> <receive> > >> <assign> > >> <assign> > >> <invoke> > >> > >> It will execute in one transaction until INVOKE (INVOKE_RESPONSE will > >> be next transaction). > >> > >> I'm not quite convinced to such approach (the other approach is to > >> have one big transaction), but that's what we have now. > >> > >> Regards, > >> -- > >> Rafał Rusin > >> http://rrusin.blogspot.com > >> http://www.touk.pl > >> http://top.touk.pl > >> > > > > > Regards, > -- > Rafał Rusin > http://rrusin.blogspot.com > http://www.touk.pl > http://top.touk.pl >
