tomee-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jonathan S Fisher (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (TOMEE-2229) JMSContext Injected by TomEE does not participate in JTA, or at least sends messages immediately
Date Fri, 31 Aug 2018 06:29:00 GMT

    [ https://issues.apache.org/jira/browse/TOMEE-2229?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16598308#comment-16598308
] 

Jonathan S Fisher commented on TOMEE-2229:
------------------------------------------

Perhaps the bug is deeper? Unless my understanding of how messages in an XA is flawed.

By default, it appears the ConnectionFactory support is supposed to be "xa"... but interestingly
though, looking at the service-jar.xml, It always creates TomEEManagedConnectionFactory,
which can only create TomEERAConnectionFactory, not TomEEXAConnectionFactory:

[https://github.com/apache/tomee/blob/master/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/jms2/TomEEManagedConnectionFactory.java#L35]

Also, it appears TomEEXAConnectionFactory isn't referenced anywhere else in the codebase,
maybe an extra branch is needed, or the default changed from TomEERAConnectionFactory to TomEEXAConnectionFactory?

> JMSContext Injected by TomEE does not participate in JTA, or at least sends messages
immediately
> ------------------------------------------------------------------------------------------------
>
>                 Key: TOMEE-2229
>                 URL: https://issues.apache.org/jira/browse/TOMEE-2229
>             Project: TomEE
>          Issue Type: Bug
>          Components: TomEE Core Server
>    Affects Versions: 7.0.5
>            Reporter: Jonathan S Fisher
>            Priority: Critical
>
> Hey guys,
> We noticed that if you have a JMSContext in a transaction EJB or CDI Bean, it always
sends messages immediately instead of waiting for the XA to commit. 
> We found this by injecting a JMSContext into an MDB marked with TransactionAttribute(Required),
calling the jmsContext.createProducer() method, sending some messages, then sleeping the original
MDB thread for several seconds. The messages arrive at their destinations immediately, long
before the MDB thread wakes up and the XA transaction completes.
> Is there a chance our understanding is not correct?
> According to the docs:
> {quote}If the injected JMSContext is used in a JTA transaction (whether container-managed
or bean-managed), the JMSContext is considered to have transaction scope. This means that
after the JTA transaction is committed, the JMSContext will be automatically closed.{quote}
> References:
> * https://www.oracle.com/technetwork/articles/java/jms20-1947669.html



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Mime
View raw message