it is enough but where to put it? what i like -> transparent and almost free what i don't know-> what about JTA (which is more generic)? what i don't like -> not compatible with @Transactional
- Romain 2012/7/9 Mark Struberg <[email protected]> > back to the original problem about how to integrate with container > management. > > I found a solution which hopefully works for managing CDI beans with EJB > CMT - even in a 100% portable way. > > Please first take a look what I've done in TransactionHelper. The same > could basically be done _inside_ a CmtPersistenceStrategy. > > First we create an internal EJB: > > > >@Stateless // this is automatically transactional > > >public class EjbTransactionHelper > > > public <T> T invokeTransactional(InvocationContext invocationContext) > throws Exception > > { > > return invocationContext.proceed(); > > } > >} > > > and then we use this EJB inside the invoke method of the > EePersistenceStrategy wrapping the target in a anynomous Callable which > just invokes the 'real' target method. > > > private @Inject EjbTransactionHelper ejbTransaction; > ... > public Object execute(InvocationContext invocationContext) throws Exception > { > ... > > > and instead of directly invoking invocationContext.proceed() we just use > the EJB: > > ejbTransaction.invokeTransactional(invocationContext); > > Since the EJB will open the transaction for us, we are basically done ... > > > > Wdyt? > > LieGrue, > strub > > > > > > ----- Original Message ----- > > From: Arne Limburg <[email protected]> > > To: "[email protected]" < > [email protected]> > > Cc: > > Sent: Monday, July 9, 2012 8:30 AM > > Subject: AW: AW: AW: [DISCUSS] [DELTASPIKE-175] [DELTASPIKE-219] > @Transactional > > > > For api it's fine, > > and then we have two impl modules, JPA and JTA? > > > > Cheers, > > Arne > > > > -----Ursprüngliche Nachricht----- > > Von: Romain Manni-Bucau [mailto:[email protected]] > > Gesendet: Sonntag, 8. Juli 2012 21:37 > > An: [email protected]; Mark Struberg > > Betreff: Re: AW: AW: [DISCUSS] [DELTASPIKE-175] [DELTASPIKE-219] > @Transactional > > > > sounds fine > > > > - Romain > > > > > > 2012/7/8 Mark Struberg <[email protected]> > > > >> maybe we should just rename the jpa module to tx? > >> > >> There is no single import of any javax.persistence in > >> deltaspike-jpa-api yet. > >> > >> LieGrue, > >> strub > >> > >> > >> > >> ----- Original Message ----- > >> > From: Arne Limburg <[email protected]> > >> > To: "[email protected]" < > >> [email protected]> > >> > Cc: > >> > Sent: Sunday, July 8, 2012 8:39 PM > >> > Subject: AW: AW: [DISCUSS] [DELTASPIKE-175] [DELTASPIKE-219] > >> @Transactional > >> > > >> > Yes, sounds good. > >> > The impl of that module could contain the JTA stuff. And the JPA > >> > module > >> would > >> > contain the resource local stuff. Everybody that does not need the > >> > JTA > >> then > >> > could just use the tx-api and the JPA api and impl. > >> > > >> > Cheers, > >> > Arne > >> > > >> > -----Ursprüngliche Nachricht----- > >> > Von: Romain Manni-Bucau [mailto:[email protected]] > >> > Gesendet: Sonntag, 8. Juli 2012 20:29 > >> > An: [email protected] > >> > Betreff: Re: AW: [DISCUSS] [DELTASPIKE-175] [DELTASPIKE-219] > >> @Transactional > >> > > >> > i thought the same, JTA shouldn't depend on JPA. @Transactional > >> > should > >> be in > >> > a tx module then JPA could use it. > >> > > >> > wdyt? > >> > > >> > - Romain > >> > > >> > > >> > 2012/7/8 Arne Limburg <[email protected]> > >> > > >> >> OK, but I am still not sure where to split it. While > > implementing > >> >> this, I got the feeling, that the @Transactional stuff should > >> >> completely move out of the JPA module. It feeled quite strange > > that > >> >> the JTA module depends on the JPA module... > >> >> > >> >> I think, I'll push my stuff right after the 0.3 release and > > than > >> >> we can discuss this at the code-base. > >> >> Maybe I should put all into the JPA module and we split it after > > > >> >> agreeing to a module structure? > >> >> > >> >> Cheers, > >> >> Arne > >> >> > >> >> -----Ursprüngliche Nachricht----- > >> >> Von: Romain Manni-Bucau [mailto:[email protected]] > >> >> Gesendet: Sonntag, 8. Juli 2012 17:48 > >> >> An: [email protected]; Mark Struberg > >> >> Betreff: Re: AW: [DISCUSS] [DELTASPIKE-175] [DELTASPIKE-219] > >> >> @Transactional > >> >> > >> >> +1 > >> >> > >> >> - Romain > >> >> > >> >> > >> >> 2012/7/8 Mark Struberg <[email protected]> > >> >> > >> >> > +1 for JTA module. > >> >> > > >> >> > LieGrue, > >> >> > strub > >> >> > > >> >> > > >> >> > > >> >> > ----- Original Message ----- > >> >> > > From: Arne Limburg > > <[email protected]> > > To: > >> >> "[email protected]" < > > >> >> [email protected]> > >> >> > > Cc: > >> >> > > Sent: Sunday, July 8, 2012 5:47 PM > > Subject: > > AW: [DISCUSS] > >> >> [DELTASPIKE-175] [DELTASPIKE-219] > > @Transactional > > >> > > Hi, > >> >> > > I startet implementing it that way, but I stumbled over > > another > >> > issue: > >> >> > > We get a dependency to the JTA spec and the EJB spec > > that way. > >> >> So > >> > > >> >> > > our > >> >> > JPA module > >> >> > > only would work with this apis in the classpath. > >> >> > > Do we accept this or are we back on a JTA module? > >> >> > > > >> >> > > Cheers, > >> >> > > Arne > >> >> > > > >> >> > > -----Ursprüngliche Nachricht----- > > Von: > > Romain Manni-Bucau > >> >> [mailto:[email protected]] > > Gesendet: Donnerstag, 5. > > Juli > >> >> 2012 15:07 > > An: [email protected] > >> >> > > Betreff: Re: [DISCUSS] [DELTASPIKE-175] > > [DELTASPIKE-219] > > > >> >> @Transactional > > > > if it works fine with CMT +1 > >> > > > > >> >> well let's have a try, we'll fix it if it is not enough > >> > ;) > >> >> > > > >> >> > > - Romain > >> >> > > > >> >> > > > >> >> > > 2012/7/5 Pete Muir <[email protected]> > > > >> >> In Seam 2 > >> >> we: > >> >> > >> > >> >> > >> * checked if UT was available in JNDI, and used it > > if it > >> > were > >> >> > >> * checked if there was a CMT transaction, and used > > it (IIRC > >> > this > >> >> > >> wwas to work around abug) > >> >> > >> * otherwise tried to use a resource local > > transaction (e.g. > >> > from > >> >> > >> Hibernate) > >> >> > >> * allowed the user to override and specify one > > strategy > > >> >> >> > >> In Seam 3 we did the same. > >> >> > >> > >> >> > >> So I like option 1. > >> >> > >> > >> >> > >> On 5 Jul 2012, at 10:03, Arne Limburg wrote: > >> >> > >> > >> >> > >> > Hi, > >> >> > >> > > >> >> > >> > yesterday I startet working on the JTA > > support for > >> > @Transactional. > >> >> > >> > My current approach is to implement a > >> > JtaPersistenceStrategy. > >> >> > >> > However that leads me to the problem: Who > > decides which > >> > > >> >> > >> PersistenceStrategy should be taken and how should > > this > >> > decision > >> >> > >> be > >> >> > made? > >> >> > >> > I have three suggestions: > >> >> > >> > > >> >> > >> > 1. We detect, if a UserTransaction is > > available, > >> > if so, the > >> >> > >> JtaPersistenceStrategy is taken, otherwise the > >> >> > >> >> ResourceLocalPersistenceStrategy is taken. > >> >> > >> > > >> >> > >> > 2. We detect, if the involved > > persistence units > >> > use JTA or > >> >> > >> RESOURCE_LOCAL (which would lead to another > > question: Would > >> > we > >> >> > >> like to support, that @Transactional mixes both > > strategies?) > >> > and > >> >> > >> decide from that information > > >> >> > >> > 3. We let the user decide by making one > > (or both) > >> > persistence > >> >> > >> strategies @Alternatives > >> >> > >> > What do you think? > >> >> > >> > > >> >> > >> > Cheers, > >> >> > >> > Arne > >> >> > >> > >> >> > >> > >> >> > > > >> >> > > >> >> > >> > > >> > > >
