Ok, Thank you all for your time and support. Really appreciate that.
Regards, Esteve On Fri, Nov 14, 2014 at 6:08 PM, Gerhard Petracek < [email protected]> wrote: > short addition: > > we could provide e.g. #beforeBegin and #afterProceed -> with that you just > need to provide a TransactionStrategy which > extends BeanManagedUserTransactionStrategy. > -> resolve the TransactionManager and use the std. api to suspend/resume > the transaction based on meta-data provided by the InvocationContext. > > regards, > gerhard > > http://www.irian.at > > Your JavaEE powerhouse - > JavaEE Consulting, Development and > Courses in English and German > > Professional Support for Apache > MyFaces, DeltaSpike and OpenWebBeans > > 2014-11-13 21:45 GMT+01:00 Gerhard Petracek <[email protected]>: > >> hi esteve, >> >> suspending a transaction is just supported by jta. since >> @org.apache.deltaspike.jpa.api.transaction.Transactional shouldn't cover >> 1:1 what ejbs provide already, it's just not supported. -> if you need it, >> you can handle the suspend/resume manually (or via an own >> TransactionStrategy based on BeanManagedUserTransactionStrategy) or you >> just use ejbs instead. >> >> regards, >> gerhard >> >> http://www.irian.at >> >> Your JavaEE powerhouse - >> JavaEE Consulting, Development and >> Courses in English and German >> >> Professional Support for Apache >> MyFaces, DeltaSpike and OpenWebBeans >> >> 2014-11-13 20:41 GMT+01:00 Esteve Avilés <[email protected]>: >> >>> Charlie, >>> >>> What I want to achieve is the following over the same EM: >>> >>> 1. Start Transaction1 on method_1 >>> 2. Start Transaction2 on method_1.method_2 >>> 3. Commit Transaction2 on method_1.method_2 >>> 4. Commit Transaction1 on method_1 >>> >>> What do I have to do? Thanks in advance. I find the use case trivial but >>> very hard to achieve. >>> >>> Regards, >>> >>> Esteve >>> >>> On Thu, Nov 13, 2014 at 5:32 PM, Charlie Mordant <[email protected]> >>> wrote: >>> >>> > Hi Esteve, >>> > >>> > Your question is not easy to understand, as commiting the transaction >>> at >>> > the end of all @Transactional annotated methods is what your code is >>> > expected to do. >>> > >>> > Here's how this @Transactional annotation works: >>> > >>> > * To start a new transaction, annotate a method with @Transactional: >>> the >>> > transaction will start at the call. >>> > * To continue the transaction between multiple method calls, annotate >>> all >>> > the methods you want to be part of the transaction with @Transactional. >>> > * To commit a transaction, make a call on a method which is not >>> annotated. >>> > * To rollback, throw an exception (that is not catched in the chain if >>> > think). >>> > >>> > Regards, >>> > Charlie >>> > >>> > >>> > 2014-11-13 16:17 GMT+01:00 Esteve Avilés <[email protected]>: >>> > >>> > > Gerhard, >>> > > >>> > > Thanks for the reply. I don't understand from your reply and >>> > documentation >>> > > if I would be able to achieve what I told you in this particular >>> > > environment. >>> > > >>> > > Thanks in advance. >>> > > >>> > > Esteve >>> > > >>> > > On Thu, Nov 13, 2014 at 9:26 AM, Gerhard Petracek < >>> > > [email protected]> wrote: >>> > > >>> > > > hi esteve, >>> > > > >>> > > > if you have one persistence-unit, the interceptor-logic executed >>> for >>> > the >>> > > > outermost transactional method will #begin and finally >>> > #commit/#rollback >>> > > > the transaction for the UserTransaction provided by the container >>> (see >>> > > > BeanManagedUserTransactionStrategy). >>> > > > >>> > > > regards, >>> > > > gerhard >>> > > > >>> > > > http://www.irian.at >>> > > > >>> > > > Your JavaEE powerhouse - >>> > > > JavaEE Consulting, Development and >>> > > > Courses in English and German >>> > > > >>> > > > Professional Support for Apache >>> > > > MyFaces, DeltaSpike and OpenWebBeans >>> > > > >>> > > > >>> > > > >>> > > > 2014-11-12 22:17 GMT+01:00 Esteve Avilés <[email protected]>: >>> > > > >>> > > > > Hi all, >>> > > > > >>> > > > > I am using Deltaspike 1.0.3 in a JBoss EAP 6.3 server. We want >>> to use >>> > > > > @Transactional annotation to delimiter a transactions. We use >>> JTA and >>> > > we >>> > > > > have set the beans alternative and created extended entity >>> manager. >>> > > > > >>> > > > > After setting @Transactional as follows (we first call >>> > > > > createAllValsForAPromocioValDescompte): >>> > > > > /** >>> > > > > * Facade method for createAllValsForAPromocioValDescompte. >>> > > > > * It first gets the PromocioValDescompte by its Id and then >>> calls >>> > > > > createAllValsForAPromocioValDescompte >>> > > > > * @param promocioValDescompteId >>> > > > > * @throws BusinessException >>> > > > > */ >>> > > > > public void createAllValsForAPromocioValDescompte(Long >>> > > > > promocioValDescompteId) throws BusinessException { >>> > > > > PromocioValDescompte promocio = >>> retrieveById(promocioValDescompteId); >>> > > > > if(promocio != null) { >>> > > > > updateStatusToInProgress(promocio); >>> > > > > this.createAllValsForAPromocioValDescompte(promocio); >>> > > > > } else { >>> > > > > log.error("PromocioValDescompte no trobat amb Id {} per proces >>> > creacio >>> > > > > vals", promocioValDescompteId); >>> > > > > } >>> > > > > } >>> > > > > @Transactional(readOnly = false) >>> > > > > public void updateStatusToInProgress(PromocioValDescompte >>> > > > > promocioValDescompte) throws BusinessException { >>> > > > > >>> > > > > >>> > > > >>> > > >>> > >>> promocioValDescompte.setEstatProcesGeneracio(EstatPromocioValDescompte.EN_EXECUCIO); >>> > > > > >>> promocioValDescompteRepository.saveAndFlush(promocioValDescompte); >>> > > > > } >>> > > > > /** >>> > > > > * Generates all vouchers that will be contained in the >>> > > > > EmissioVoucherPredefinit >>> > > > > * @param promocioValDescompte >>> > > > > * @param emissorVoucher >>> > > > > * @param tipusVoucher >>> > > > > * @throws BusinessException >>> > > > > */ >>> > > > > @Transactional >>> > > > > public void >>> > createAllValsForAPromocioValDescompte(PromocioValDescompte >>> > > > > promocioValDescompte) throws BusinessException { >>> > > > > >>> > > > > log.info("Inici creacio de {} vals per a l'emissio {} i Id {}", >>> > > > > promocioValDescompte.getQuantitatDemanada(), >>> > > > promocioValDescompte.getNom(), >>> > > > > promocioValDescompte.getId()); >>> > > > > promocioValDescompte.setQuantitatGenerada(0); >>> > > > > ..... >>> > > > > >>> > > > > We see all methods executed in a unique transaction, and >>> database is >>> > > only >>> > > > > updated at the end. >>> > > > > >>> > > > > Do we need to set something else? Before that, in a JEE5 env, we >>> were >>> > > > > using @Transactional(TransactionPropagationType.REQUIRED) >>> > > > > and @Transactional(TransactionPropagationType.NEVER) to achieve >>> the >>> > > same >>> > > > > objective. >>> > > > > >>> > > > > Can anyone help us? >>> > > > > >>> > > > > Thanks in advance. >>> > > > > >>> > > > > Regards, >>> > > > > >>> > > > > -- >>> > > > > Esteve Avilés >>> > > > > >>> > > > >>> > > >>> > > >>> > > >>> > > -- >>> > > Esteve Avilés >>> > > >>> > >>> > >>> > >>> > -- >>> > Charlie Mordant >>> > >>> > Full OSGI/EE stack made with Karaf: >>> > https://github.com/OsgiliathEnterprise/net.osgiliath.parent >>> > >>> >>> >>> >>> -- >>> Esteve Avilés >>> >> >> > -- Esteve Avilés
