javax.transaction.Transactional

On Wed, May 10, 2017 at 9:56 PM, Mark Struberg <[email protected]>
wrote:

> Which @Transactional do you use? javax.transaction.Transactional or
> org.apache.deltaspike.jpa.api.transaction.Transactional ?
>
>
> LieGrue,
> strub
>
>
> > Am 10.05.2017 um 19:51 schrieb Instantiation Exception <
> [email protected]>:
> >
> > John,
> >
> > So in this situation can I completly remove beans.xml?
> >
> > So why does it work? ContainerManagedTransactionStrategy has trivial
> > implementation:
> > https://github.com/apache/deltaspike/blob/master/
> deltaspike/modules/jpa/impl/src/main/java/org/apache/deltaspike/jpa/impl/
> transaction/ContainerManagedTransactionStrategy.java
> >
> > As Mark said
> > "It is essentially a no-op TransactionStrategy. It delegates through
> > without doing something."
> > "This is useful if you GUARANTEED have a ContainerManagedTransation in an
> > outer level.
> > E.g. if you have some existing code using DeltaSpike @Transactional, and
> > you know that you ALWAYS have e.g. a @Stateless @WebService calling your
> > code."
> >
> > Best regards,
> > Konrad
> >
> >
> > On Wed, May 10, 2017 at 7:39 PM, John D. Ament <[email protected]>
> > wrote:
> >
> >> Konrad,
> >>
> >> By using a global alternative, you're effectively making what is in
> >> beans.xml ignored.
> >>
> >> John
> >>
> >> On Wed, May 10, 2017 at 1:32 PM Instantiation Exception <
> >> [email protected]> wrote:
> >>
> >>> John,
> >>>
> >>> There is one think which I don't understand:
> >>> apache-deltaspike.properties contains different TransactionStrategy
> >>> than beans.xml
> >>>
> >>> * apache-deltaspike.properties contains
> >>>
> >>> org.apache.deltaspike.jpa.impl.transaction.
> >> ContainerManagedTransactionStrategy
> >>> * beans.xml contains
> >>>
> >>> org.apache.deltaspike.jpa.impl.transaction.
> >> BeanManagedUserTransactionStrategy
> >>>
> >>> Isn't it a conflict?
> >>>
> >>> Best regards,
> >>> Konrad
> >>>
> >>> On Wed, May 10, 2017 at 7:22 PM, John D. Ament <[email protected]>
> >>> wrote:
> >>>
> >>>> Konrad,
> >>>>
> >>>> Yes, what you're doing should work and actually matches what I do
> >>> presently
> >>>> in a production environment.  If you're using the JTA @Transactional
> >> what
> >>>> you're doing is what will work for you.
> >>>>
> >>>> John
> >>>>
> >>>> On Wed, May 10, 2017 at 1:20 PM Instantiation Exception <
> >>>> [email protected]> wrote:
> >>>>
> >>>>> Mark, John
> >>>>>
> >>>>> I am not sure if I properly understand so I created demo app with my
> >>>>> current configuration:
> >>>>> https://github.com/instantiationexception/wildfly-deltaspike-data
> >>>>>
> >>>>> Generally there are 4 files specific to DeltaSpike Data:
> >>>>>
> >>>>> * EntityManagerProducer.java
> >>>>> * apache-deltaspike.properties
> >>>>> * beans.xml
> >>>>>
> >>>>> My goals are:
> >>>>>
> >>>>> * Use JTA EntityManager provided by WildFly
> >>>>> * Use @Transactional from javax.transaction
> >>>>> * Mix CDI and EJB
> >>>>>
> >>>>> Generally this demo app works. But I am not sure if more complicated
> >>> app
> >>>>> will work.
> >>>>> Is this configuration correct? Are there any unneeded/invalid
> >> elements?
> >>>>>
> >>>>> Best regards,
> >>>>> Konrad
> >>>>>
> >>>>> On Wed, May 10, 2017 at 11:22 AM, Mark Struberg
> >>>> <[email protected]
> >>>>>>
> >>>>> wrote:
> >>>>>
> >>>>>> Hi Konrad, John!
> >>>>>>
> >>>>>> Hmm not sure about ContainerManagedTransactionStrategy.
> >>>>>>
> >>>>>> Look at the code, this is probably not named properly. It is
> >>>> essentially
> >>>>> a
> >>>>>> no-op TransactionStrategy. It delegates through without doing
> >>>> something.
> >>>>>>
> >>>>>> This is useful if you GUARANTEED have a ContainerManagedTransation
> >> in
> >>>> an
> >>>>>> outer level.
> >>>>>> E.g. if you have some existing code using DeltaSpike
> >> @Transactional,
> >>>> and
> >>>>>> you know that you ALWAYS have e.g. a @Stateless @WebService calling
> >>>> your
> >>>>>> code.
> >>>>>> We cannot rename this now because otherwise the Alternatives
> >> enabled
> >>> in
> >>>>>> various beans.xml files would go bonkers...
> >>>>>>
> >>>>>> So if you are about to use e.g. an @ApplicationScoped
> >> @Transactional
> >>>> bean
> >>>>>> without any EJBs involved at all, then you should rather use the
> >>>>>> BeanManagedUserTransactionStrategy.
> >>>>>> This one leverages the UserTransaction functionality provided by
> >> the
> >>>>>> server. If a JTA Transaction is already active then it would simply
> >>> do
> >>>>>> nothing. So in this case it really behaves the same like
> >>>>>> ContainerManagedTransactionStrategy.
> >>>>>>
> >>>>>> But if there is NO active Transaction, then it will use the
> >>>>>> UserTransaction API to open a transaction and to commit/rollback on
> >>>> this
> >>>>>> very layer when leaving the intercepted method. Subsequently
> >> invoked
> >>>>>> @Transactional CDI beans - and even EJBs! - will just take this
> >> open
> >>>>>> transaction and work with it.
> >>>>>> So this works perfectly fine in cases where you only use CDI but
> >> also
> >>>>> when
> >>>>>> you wildly mix EJBs and CDI beans.
> >>>>>> I use this in production for quite a few projects.
> >>>>>>
> >>>>>> Note that the EntityManagerProducer you need to provide must use a
> >>>>>> container provided EntityManagerFactory, otherwise your
> >> EntityManager
> >>>>> won't
> >>>>>> integrate with JTA.
> >>>>>> A sample can be found here:
> >>>>>> https://github.com/struberg/lightweightEE/blob/jtacdi11/
> >>>>>> backend/src/main/java/de/jaxenter/eesummit/caroline/backend/tools/
> >>>>>> EntityManagerProducer.java#L40
> >>>>>>
> >>>>>>
> >>>>>> hth.
> >>>>>>
> >>>>>> LieGrue,
> >>>>>> strub
> >>>>>>
> >>>>>>> Am 09.05.2017 um 01:50 schrieb John D. Ament <
> >>> [email protected]
> >>>>> :
> >>>>>>>
> >>>>>>> Konrad,
> >>>>>>>
> >>>>>>> When you specify globalAlternatives, you don't need to specify
> >>>> anything
> >>>>>> in
> >>>>>>> beans.xml
> >>>>>>>
> >>>>>>> RE which strategy to use, it'll be the one that matches your
> >>>>> transaction
> >>>>>>> mode.  If you're using plain JTA just use
> >>>>>>> ContainerManagedTransactionStrategy.
> >>>>>>>
> >>>>>>> John
> >>>>>>>
> >>>>>>> On Mon, May 8, 2017 at 3:56 PM Instantiation Exception <
> >>>>>>> [email protected]> wrote:
> >>>>>>>
> >>>>>>>> John,
> >>>>>>>>
> >>>>>>>> I want to clarify one thing. When I use
> >>>>>>>> META-INF/apache-deltaspike.properties with
> >>>>>>>> globalAlternatives.org.apache.deltaspike.jpa.spi.transaction.
> >>>>>>>> TransactionStrategy=org.apache.deltaspike.jpa.impl.transaction.
> >>>>>>>> ContainerManagedTransactionStrategy
> >>>>>>>>
> >>>>>>>> should I use alternative in beans.xml? And which one?
> >>>>>>>> org.apache.deltaspike.jpa.impl.transaction.
> >>>>>> ContainerManagedTransactionStr
> >>>>>>>> ategy
> >>>>>>>> or
> >>>>>>>> org.apache.deltaspike.jpa.impl.transaction.
> >>>>>> BeanManagedUserTransactionStrategy
> >>>>>>>>
> >>>>>>>> Best regards,
> >>>>>>>> Konrad
> >>>>>>>>
> >>>>>>>> On Fri, Mar 3, 2017 at 2:57 PM, John D. Ament <
> >>>> [email protected]>
> >>>>>>>> wrote:
> >>>>>>>>
> >>>>>>>>> Ondrej,
> >>>>>>>>>
> >>>>>>>>> I agree as well.  It definitely should be more turn key in this
> >>>>>> respect.
> >>>>>>>>>
> >>>>>>>>> John
> >>>>>>>>>
> >>>>>>>>> On Fri, Mar 3, 2017 at 8:53 AM Ondrej Mihályi <
> >>>>>> [email protected]>
> >>>>>>>>> wrote:
> >>>>>>>>>
> >>>>>>>>>> Hi John,
> >>>>>>>>>>
> >>>>>>>>>> It sounds to me that DeltaSpike could be improved to make a
> >>>>>>>> sophisticated
> >>>>>>>>>> guess to infer the default value of this configuration from
> >> the
> >>>>>>>> container
> >>>>>>>>>> it is running in. At least for WildFly and maybe some other
> >>>>> containers
> >>>>>>>>>> where people report problems.
> >>>>>>>>>>
> >>>>>>>>>> Just an idea :)
> >>>>>>>>>>
> >>>>>>>>>> Ondrej
> >>>>>>>>>>
> >>>>>>>>>> 2017-03-03 12:05 GMT+01:00 John D. Ament <
> >> [email protected]
> >>>> :
> >>>>>>>>>>
> >>>>>>>>>>> Hi Konrad,
> >>>>>>>>>>>
> >>>>>>>>>>> What that's referring to is that you need to create a
> >>>>>>>>>>> META-INF/apache-deltaspike.properties and add the following
> >>>> line:
> >>>>>>>>>>>
> >>>>>>>>>>> globalAlternatives.org.apache.deltaspike.jpa.spi.
> >> transaction.
> >>>>>>>>>>> TransactionStrategy=org.apache.deltaspike.jpa.impl.
> >> transaction.
> >>>>>>>>>>> ContainerManagedTransactionStrategy
> >>>>>>>>>>>
> >>>>>>>>>>> I do something similar to  you, and it works perfect.  I'm
> >>> using
> >>>>>>>> maven
> >>>>>>>>> to
> >>>>>>>>>>> build a WAR file, so it just goes in
> >>>>>>>>>>> src/main/resources/META-INF/apache-deltaspike.properties
> >>>>>>>>>>>
> >>>>>>>>>>> John
> >>>>>>>>>>>
> >>>>>>>>>>> On Fri, Mar 3, 2017 at 3:38 AM Instantiation Exception <
> >>>>>>>>>>> [email protected]> wrote:
> >>>>>>>>>>>
> >>>>>>>>>>>> Hi,
> >>>>>>>>>>>>
> >>>>>>>>>>>> In my company projects we use WildFly. In the past I tried
> >> few
> >>>>>>>> times
> >>>>>>>>> to
> >>>>>>>>>>> use
> >>>>>>>>>>>> DeltaSpike Data, but it didn't work. I configured everything
> >>>>>>>>> according
> >>>>>>>>>> to
> >>>>>>>>>>>> documentation. In pure CDI scenario it worked. But when I
> >>>> created
> >>>>>>>>>>>> @Dependent @Repository and injected it to @Stateless EJB I
> >> got
> >>>>> some
> >>>>>>>>>>>> transaction errors when tried to call EJB methods. In
> >>>>>>>> documentation I
> >>>>>>>>>> see
> >>>>>>>>>>>> warning:
> >>>>>>>>>>>>
> >>>>>>>>>>>> Some containers do not support
> >> BeanManagedUserTransactionStra
> >>>> tegy!
> >>>>>>>>> As
> >>>>>>>>>>> JTA
> >>>>>>>>>>>>> has still some portability issues even in Java EE 7, it
> >> might
> >>>> be
> >>>>>>>>>>> required
> >>>>>>>>>>>>> that you implement your own TransactionStrategy. We will
> >>> think
> >>>>>>>>> about
> >>>>>>>>>>>>> providing an acceptable solution for this.
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>> Is it about WildFly? Is WildFly supported?
> >>>>>>>>>>>>
> >>>>>>>>>>>> Best regards,
> >>>>>>>>>>>> Konrad
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>>>>>
> >>>>>>
> >>>>>
> >>>>
> >>>
> >>
>
>

Reply via email to