cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andrei Shakirin (JIRA)" <>
Subject [jira] [Issue Comment Deleted] (CXF-6425) Check for external transactions in PollingMessageListenerContainer
Date Thu, 28 May 2015 12:52:22 GMT


Andrei Shakirin updated CXF-6425:
    Comment: was deleted

(was: After discussion with Christian, I admit that external transactions in PollingMessageListenerContainer
doesn't make a lot of sense.
If transaction is automatically attached to the thread (for example by container), it can
be committed only after stop() method. This means that single transaction will include receiving
more than one JMS message or PollingMessageListenerContainer should be stopped every time
when message is received. Currently I have no valid use case for that.
The code will be update in a way to throw exception if external transaction is detected and
ensure to commit or rollback transaction in every case (do not leave active transactions in

> Check for external transactions in PollingMessageListenerContainer
> ------------------------------------------------------------------
>                 Key: CXF-6425
>                 URL:
>             Project: CXF
>          Issue Type: Improvement
>          Components: JMS
>    Affects Versions: 3.0.1, 3.1.0
>            Reporter: Andrei Shakirin
>            Assignee: Andrei Shakirin
> Currently PollingMessageListenerContainer doesn't check if transaction was already created
by container and tries to created nested one.
> That causes the following error:
> {code}
> 10:31:13,826 | WARN | pool-52-thread-1 | essageListenerContainer$XAPoller 128 | 158 -
org.apache.cxf.cxf-rt-transports-jms - 3.1.1.SNAPSHOT | Unexpected exception. Res
> tarting session and consumer javax.transaction.NotSupportedException: Nested Transactions
are not supported
> at org.apache.geronimo.transaction.manager.TransactionManagerImpl.begin(
> at org.apache.geronimo.transaction.manager.TransactionManagerImpl.begin([111:org.apache.aries.transaction.manager:1.1.1]
> at org.apache.cxf.transport.jms.util.PollingMessageListenerContainer$[158:org.apache.cxf.cxf-rt-transports-jms:3.1.1.SNAPSHOT]
> at java.util.concurrent.ThreadPoolExecutor.runWorker([:1.7.0_21]
> at java.util.concurrent.ThreadPoolExecutor$[:1.7.0_21]
> at[:1.7.0_21]
> {code}
> Proposal: check if the transaction already exists and if yes:
> a) not start it explicitly through TransactionManager
> b) in case of exception call setRollbackOnly()

This message was sent by Atlassian JIRA

View raw message