I'd rather say we should only have 1 JTA plugin in owb-ee (for the general javax.jta dependencies) which uses the plugin mechanism + providing a SPI. It should also contain a default impl picked up by our openwebbeans.properties. Other modules can then use a different impl.
But would need to take a closer look at all this, as I've not written the original EE integration stuff and only glimpsed over it. LieGrue, strub ----- Original Message ----- > From: Arne Limburg <[email protected]> > To: "[email protected]" <[email protected]> > Cc: > Sent: Monday, September 5, 2011 10:11 AM > Subject: AW: AW: AW: AW: Transactional events and the TransactionService > >T hat's why I proposed to use a separate module. This module then could use > the plugin-mechanism, too. > @Gurkan: I would prefer a solution where no OWB specific configuration is > needed > at the client side. > > Cheers, > Arne > > -- > > Arne Limburg - Enterprise Architekt > open knowledge GmbH, Oldenburg > Bismarckstraße 13, 26122 Oldenburg > Mobil: +49 (0) 151 108 22 942 > Tel: +49 (0) 441 - 4082-0 > Fax: +49 (0) 441 - 4082-111 > [email protected] > http://www.openknowledge.de > > Registergericht: Amtsgericht Oldenburg, HRB 4670 > Geschäftsführer: Lars Röwekamp, Jens Schumann > > > -----Ursprüngliche Nachricht----- > Von: Mark Struberg [mailto:[email protected]] > Gesendet: Montag, 5. September 2011 10:06 > An: [email protected] > Betreff: Re: AW: AW: AW: Transactional events and the TransactionService > > Oki, that's an argument :) > > Then, we should take a more closer look at how to implement it with using our > property system. > > LieGrue, > strub > > > > ----- Original Message ----- >> From: Arne Limburg <[email protected]> >> To: "[email protected]" > <[email protected]> >> Cc: >> Sent: Monday, September 5, 2011 9:59 AM >> Subject: AW: AW: AW: Transactional events and the TransactionService >> >> Hi Mark, >> >> your suggestion won't work since the existing implementations are not >> using openwebbeans.properties to configure their TransactionService. >> Instead of that they are using the Plugin-mechanism. >> >> Cheers, >> Arne >> >> -- >> >> Arne Limburg - Enterprise Architekt >> open knowledge GmbH, Oldenburg >> Bismarckstraße 13, 26122 Oldenburg >> Mobil: +49 (0) 151 108 22 942 >> Tel: +49 (0) 441 - 4082-0 >> Fax: +49 (0) 441 - 4082-111 >> [email protected] >> http://www.openknowledge.de >> >> Registergericht: Amtsgericht Oldenburg, HRB 4670 >> Geschäftsführer: Lars Röwekamp, Jens Schumann >> >> >> -----Ursprüngliche Nachricht----- >> Von: Mark Struberg [mailto:[email protected]] >> Gesendet: Montag, 5. September 2011 09:54 >> An: [email protected] >> Betreff: Re: AW: AW: Transactional events and the TransactionService >> >> This can easily be tweaked by using a proper configuration.ordinal in >> our openwebbeans.properties. >> The common ee plugin must have a lower ordinal than the more special > plugins. >> >> owb-core >> ^ >> owb-ee >> ^ >> owb-openejb, etc >> >> We should be able to keep this perfectly compatible imo. >> >> >> LieGrue, >> strub >> >> >> >> ----- Original Message ----- >>> From: Arne Limburg <[email protected]> >>> To: "[email protected]" >> <[email protected]> >>> Cc: >>> Sent: Monday, September 5, 2011 9:12 AM >>> Subject: AW: AW: Transactional events and the TransactionService >>> >>> Hi Gurkan, >>> >>> Placing the DefaultTransactionService in the ee-module and >>> instantiating it with openwebbeans.properties would place an >>> incompatibility between version 1.1(.1) and version 1.2 of OWB, since >>> the services defined in openwebbeans.properties take precedence over >>> the services defined in plugins. Current implementations of the >>> TransactionService (openEJB, Geronimo, ...) all are defined within >>> plugins and would be ignored with 1.2 of OWB. If this is no problem, >>> I agree, that the service should go into the ee-module. BTW the >>> Geronimo-implementation of our TransactionService would be obsolete >>> anyway with my default-implementation and I can change the >> openEJB-implementation on the way. Are there any other implementations >> of the TransactionService we know of? >>> >>> Cheers, >>> Arne >>> >>> -- >>> >>> Arne Limburg - Enterprise Architekt >>> open knowledge GmbH, Oldenburg >>> Bismarckstraße 13, 26122 Oldenburg >>> Mobil: +49 (0) 151 108 22 942 >>> Tel: +49 (0) 441 - 4082-0 >>> Fax: +49 (0) 441 - 4082-111 >>> [email protected] >>> http://www.openknowledge.de >>> >>> Registergericht: Amtsgericht Oldenburg, HRB 4670 >>> Geschäftsführer: Lars Röwekamp, Jens Schumann >>> >>> -----Ursprüngliche Nachricht----- >>> Von: Gurkan Erdogdu [mailto:[email protected]] >>> Gesendet: Sonntag, 4. September 2011 20:23 >>> An: [email protected] >>> Betreff: İlt: AW: Transactional events and the TransactionService >>> >>> Hello Arne, >>> >>> >>> Great work! >>> >>> >>> I think that It is not necessary to add a new module for JTA >>> integration. There is openwebbean-ee module that you can add >>> TransactionService implementation with a name >>> DefaultTransactionService. If anyone wants to use other >>> implementation, >> they can do it via openwebbeans.properties file. >>> >>> Thanks >>> >>> >>> Gurkan >>> >>> ________________________________ >>> Kimden: Arne Limburg <[email protected]> >>> Kime: "[email protected]" >>> <[email protected]> Gönderildiği Tarih: 4 Eylül 2011 > 11:06 >>> Pazar >>> Konu: AW: İlt: AW: Transactional events and the TransactionService >>> >>> OK, I pick this up again :-) >>> >>> Yes, Mark, the main goal is to provide JTA support for scenarios >>> that are no full Java EE server. But such general solution could >>> also be used by Java EE server developers to integrate OWB. When I >>> take a look at the Geronimo implementation of the >>> TransactionService, I must admit, that a general solution would look > very similar. >>> >>> I already have implemented such solution and if we all agree that >>> this should go into a separate module webbeans-jta, then I would > commit it. >>> With that separate module we would avoid conflicts with existing >>> implementations of the TransactionService (like i.e. Geronimo). >>> >>> Cheers, >>> Arne >>> >>> -- >>> >>> Arne Limburg - Enterprise Architekt >>> open knowledge GmbH, Oldenburg >>> Bismarckstraße 13, 26122 Oldenburg >>> Mobil: +49 (0) 151 108 22 942 >>> Tel: +49 (0) 441 - 4082-0 >>> Fax: +49 (0) 441 - 4082-111 >>> [email protected] >>> http://www.openknowledge.de >>> >>> Registergericht: Amtsgericht Oldenburg, HRB 4670 >>> Geschäftsführer: Lars Röwekamp, Jens Schumann >>> >>> >>> -----Ursprüngliche Nachricht----- >>> Von: Mark Struberg [mailto:[email protected]] >>> Gesendet: Sonntag, 28. August 2011 11:27 >>> An: [email protected] >>> Betreff: Re: İlt: AW: Transactional events and the >>> TransactionService >>> >>> To pick this up again: >>> >>> This discussion is about having JTA but without a fully blown EE >>> server. All agree on this? >>> >>> Currently the only impl for the TransactionService is the one for >>> OpenEJB. But we could easily provide one which is impl agnostic >>> (beside the typical problem with the JNDI namespaces - did I ever >>> mention that JNDI sucks? ;) >>> >>> So also a +1 for option 2 (configuring the JNDI names via >>> openwebbeans.properties). >>> >>> LieGrue, >>> strub >>> >>> --- On Tue, 8/23/11, Gurkan Erdogdu <[email protected]> > wrote: >>> >>>> From: Gurkan Erdogdu <[email protected]> >>>> Subject: İlt: AW: Transactional events and the TransactionService >>>> To: "[email protected]" >>> <[email protected]> >>>> Date: Tuesday, August 23, 2011, 11:00 AM >>>> >>>> >>>> >>>> ----- İletilen Mesaj ----- >>>> Kimden: Gurkan Erdogdu <[email protected]> >>>> Kime: Arne Limburg <[email protected]> > Gönderildiği >>> Tarih: >>>> 23 Ağustos 2011 14:00 Salı >>>> Konu: Yan: AW: Transactional events and the TransactionService >>>> >>>> >>>> >>>because of the missing implementation of the >> TransactionService, >>>> this problem will occur in EE-environments, >>>> >>>> >>>> Yes, currently only OpenEJB plugin supports it. If you want >>>> another, has to implement how Geronimo does. >>>> >>>> >>>> >>>> > https://svn.apache.org/repos/asf/geronimo/server/trunk/plugins/opene >>>> j >>>> b >>>> >>>> > /geronimo-openejb/src/main/java/org/apache/geronimo/openejb/cdi/Gero >>>> n >>>> i >>>> moTransactionService.java >>>> >>>> For common TransactionService implementation, my choice is > number >>>> 2 >>>> >>>> Gurkan >>>> >>>> >>>> >>>> ________________________________ >>>> Kimden: Arne Limburg <[email protected]> >>>> Kime: "[email protected]" >>>> <[email protected]>; >>>> Gurkan Erdogdu <[email protected]> Gönderildiği > Tarih: 23 >> >>>> Ağustos 2011 10:32 Salı >>>> Konu: AW: Transactional events and the TransactionService >>>> >>>> Hi Gurkan, >>>> >>>> aktually I think >>> OWB is violating Section 10.4.4 of the >>>> spec. In the environment I am talking about, a JTA transaction > is >>>> active, but the events are fired directly as if it were not. The >>>> reason is simply, that OWB does not recognize the active >>>> transaction, because of the missing TransactionService. Also the >>>> environment I am talking about is non EE, because of the missing >>>> implementation of the TransactionService, this problem will occur > in >>>> EE-environments, >>>> too. What I am saying is, that currently OWB will not use >>>> transactional events, even when running in JBoss or Glassfish >> (I'll >>>> confirm this...). >>>> >>>> I discussed another (less invasive) option to solve this off this >>>> list with Mark and Jens Schumann: >>>> Our problem is: How can OWB recognize that there is an active JTA >>>> transaction? >>>> 1. My solution (which is in alignment with the JTA >>>> >>> standard) would be to use the standardized location of the >>>> TransactionSynchronizationRegistry in JNDI. >>>> 2. The solution proposed by Mark and Jens is to write a general >>>> TransactionService that does a JNDI-lookup to get the >>>> TransactionManager. Since the JNDI-location of the >>>> TransactionManager is not standardized by the JTA spec, we would >>>> make this location configurable via openwebbeans.properties. With >>>> this solution the work to integrate a new application server would >>>> be just to specify the JNDI-location of the >>>> TransactionManager. >>>> >>>> Regards, >>>> Arne >>>> >>>> -----Ursprüngliche Nachricht----- >>>> Von: Gurkan Erdogdu [mailto:[email protected]] >>>> >>>> Gesendet: Dienstag, 23. August 2011 09:04 >>>> An: [email protected] >>>> Betreff: Yan: Transactional events and the TransactionService >>>> >>>> Hello Arne, >>>> >>>> I do not see any reason to implement a new TransactionService >>>> implementation for your non-JavaEE environment (if there is a > chance >>>> to get Transaction and TM from your environment) and use it. >>>> >>>> Spec talks about JTA transactions. See Spec Section 10.4.4, >>>> Transactional observer methods >>>> >>>> Your idea is related to introduce a new spec requirement :) This >>>> is another story..... >>>> >>>> >>>> Gurkan >>>> >>>> >>>> >>>> ________________________________ >>>> Kimden: Arne Limburg >>>> <[email protected]> >>>> Kime: "[email protected]" >>>> <[email protected]> >>>> Gönderildiği Tarih: 22 Ağustos 2011 12:08 Pazartesi >>>> Konu: Transactional events and the TransactionService >>>> >>>> Hi, >>>> >>>> I am working in a non-java-ee-environment where I need >>>> transactional CDI events. >>>> The org.apache.webbeans.spi.TransactionService is needed to >>>> support transactional events in OWB. I recognized, that the only >>>> implementation of this service in the OWB code base is the >>>> OpenEJBTransactionService. >>>> Imho it is desirable to implement a more general approach that >>>> works out of the box in >>> ee-environments (without >>>> OpenEJB) and can be >>>> configured in non-ee-environments. >>>> Unfortunately this is not as easy as it sounds, since our >>>> TransactionService needs access to the >>>> javax.transaction.Transaction and the >>>> javax.transaction.TransactionManager and there currently is no >>>> standardized way to access this in Java EE (i.e. no standardized > JNDI name). >>>> However there is a standardized way to access a >>>> javax.transaction.TransactionSynchronizationRegistry via JNDI, >>>> which is recommended by the JTA spec and would suffice our needs. >>>> Now I wonder how this could be integrated into OWB >>>> smoothly: >>>> Currently the TransactionalEventNotifier uses the >>>> TransactionService to obtain a javax.transaction.Transaction and > do >>>> the synchronization with it. To achieve a more general approach >>>> here it should access a >>>> >>> javax.transaction.TransactionSynchronizationRegistry here >>>> instead. But where to get such registry from? >>>> >>>> 1. The TransactionalEventNotifer directly searches the >>>> TransactionSynchronizationRegistry via JNDI. Easiest solution >>>> that is at the same time the least flexible >>>> solution: If someone would like to provide the >>>> TransactionSynchronizationRegistry via another way, this simply >>>> would not be possible. So to me this seems to be a bad solution >>>> >>>> 2. Add getTransactionSynchronizationRegistry() to our >>>> TransactionService interface. Two drawbacks here: First this has to >>>> be done with a minor version update (no big problem, we could do >>>> this with OWB 1.2). Second problem: We are still not able to >>>> implement a generic approach since such generic TransactionService >>>> would also have to >>> implement >>>> getTransactionManager() and getTransaction() which cannot be >>>> accessed in a generic approach. >>>> >>>> 3. We add a complete new SPI, something like >>>> TransactionSynchronizationService, which specifies the method >>>> registerTransactionSynchronization and deprecate that method in > the >>>> TransactionService. >>>> We then could implement an implementation for that service that >>>> looks up the TransactionSynchronizationRegistry from JNDI. > Drawback: >>>> It feels somewhat strange to me to separate this concerns. >>>> >>>> 4. We add the TransactionSynchronizationService from 2. and >>>> specify it as a superinterface of the TransactionService. We then >>>> would not have to deprecate that method in the TransactionService >>>> and could add a generic implementation of the >>>> TransactionSynchronizationService that does not >>> implement the TransactionService. Drawback: We >>>> currently have to inheritance in the SPIs and would have to add >>>> some code to handle this. >>>> Any more ideas on this? >>>> >>>> Imho we should go with either 3. or 4. What do you think? >>>> >>>> Regards, >>>> Arne >>>> >>>> -- >>>> Arne Limburg - Enterprise Architekt >>>> open knowledge GmbH, Oldenburg >>>> Bismarckstraße 13, 26122 Oldenburg >>>> Mobil: +49 (0) 151 108 22 942 >>>> Tel: +49 (0) 441 - 4082-0 >>>> Fax: +49 (0) 441 - >>>> 4082-111 >>>> [email protected] >>>> http://www.openknowledge.de >>>> >>>> Registergericht: Amtsgericht Oldenburg, HRB 4670 >>>> Geschäftsführer: Lars Röwekamp, Jens Schumann >>> >> >
