[jboss-jira] [JBoss JIRA] (WFLY-9529) Using injected JMS in a background task/thread leads to NameNotFoundException: java:comp/TransactionSynchronizationRegistry

Scott Van Wart (JIRA) issues at jboss.org
Tue Nov 7 09:52:00 EST 2017


Scott Van Wart created WFLY-9529:
------------------------------------

             Summary: Using injected JMS in a background task/thread leads to NameNotFoundException: java:comp/TransactionSynchronizationRegistry
                 Key: WFLY-9529
                 URL: https://issues.jboss.org/browse/WFLY-9529
             Project: WildFly
          Issue Type: Bug
          Components: JMS
    Affects Versions: 11.0.0.Final, 10.1.0.Final
         Environment: Running on Windows 10, Java 64-bit 1.8.0_131
            Reporter: Scott Van Wart
            Assignee: Jeff Mesnil
         Attachments: injected-jms.zip, wildfly-11-injected-jms.txt

If I try to use an @Injected JMSContext while executing within a background task (ManagedExecutorService) or thread (ManagedThreadFactory), I get the attached stacktrace. I've experienced this a number of times with Wildfly 10.1.0, including messages sent in Infinispan's expiry task thread.

My original workaround was to submit an additional task on a separate thread to send the message, then wait for it to complete.  That seemed unreliable (sometimes it would still produce NameNotFoundException).  I've resorted to creating my own JMSContext by using @Resource( lookup="java:/ConnectionFactory" ) and sending messages that way.  Both workarounds prevent the message sending logic from participating in any ongoing transactions.

I'm also attaching a sample EAR project.  It can be built with Maven.  It creates a background task that waits 3 seconds and then tries to send a JMS message in a new transaction using an injected JMS context. I use the standalone-full.xml profile to run it.



--
This message was sent by Atlassian JIRA
(v7.5.0#75005)


More information about the jboss-jira mailing list