You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by "Jonathan S Fisher (JIRA)" <ji...@apache.org> on 2018/09/15 15:03:00 UTC

[jira] [Commented] (TOMEE-2229) JMSContext Injected by TomEE does not participate in JTA, or at least sends messages immediately

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

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

So I *did* get this to partially work with Romain's configuration by specifying a brokerUrl and having multiple JMSConnectionFactory's defined in tomee.xml, then overriding the connection factory selection with `@JMSConnectionFactory` at the top of the class. Phew.

TomEE is most certainly behaving out of spec though, it looks as JMSContext is definitely supposed to auto-join the ongoing XA: https://docs.oracle.com/javaee/7/tutorial/jms-concepts005.htm

The other bug is with the TomEEXAConnectionFactory itself... It would be really nice if it could point to a resource adapter rather than straight to a broker url. Not a huge dealbreaker, but for consistency of configuration, that'd be nice.

> 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)