]
Miroslav Novak commented on WFLY-8217:
--------------------------------------
[~silvaran] Thanks for the update! I've reproduced it on EAP 7.1.0.DR16 so I cloned it
to JBEAP-10503. Added automatic test based on your reproducer.
Unfortunately I'm not CDI master so not sure if there is a problem in the way how CDI
bean is injected to MDB. It's @ApplicationScoped bean which has injected JMSContext.
This JMSContext should be @TransactionScoped. So it's MDB with @ApplicationScoped bean
which has @TransactionScoped bean. I'm not sure if this is correct usage. Probably
JMSContext should be Injected to MDB and passed to @ApplicationScoped bean which sends
message as parameter but not sure about this.
ActiveMQ leaks connections if a JMS message is sent from an MDB
---------------------------------------------------------------
Key: WFLY-8217
URL:
https://issues.jboss.org/browse/WFLY-8217
Project: WildFly
Issue Type: Bug
Components: JMS, Transactions
Affects Versions: 10.1.0.Final
Environment: Running on Windows 10. Java(TM) SE Runtime Environment (build
1.8.0_92-b14)
Reporter: Scott Van Wart
Assignee: Jeff Mesnil
Priority: Minor
Attachments: leak.zip, leak.zip, log.txt, log.txt, server.log
If an MDB causes a JMS message to be sent during the call to onMessage(), ActiveMQ
won't close its connection. I'm using JMS2 through an @Inject'ed JMSContext.
My sample project is an EAR with an EJB JAR (containing a service and an MDB) and a JAX-RS
endpoint (entry point for the test).
1) Build the EAR
2) Run wildfly with the standalone-full.xml configuration:
{{standalone.bat --server-config=standalone-full.xml}}
3) Enable debug and error reporting for leaked connections with ActiveMQ/CCM:
{{jboss-cli.bat -c}}
{{/subsystem=jca/cached-connection-manager=cached-connection-manager:write-attribute(name=debug,value=true)}}
{{/subsystem=jca/cached-connection-manager=cached-connection-manager:write-attribute(name=error,value=true)}}
4) Deploy the EAR.
5) Access
http://localhost:8080/leak-web/rest/test?message=Hi
The REST endpoint will send a message to the test topic (Defined in
leak-ejb/src/main/java/test/mdb/TestTopic.java). TestTopicListener (in the same package as
TestTopic) will receive the message and send a second message to the topic. Upon returning
from TestTopicListener.onMessage(), the message is sent, but this shows up in the logs
(see attached log.txt)
I have no idea why JIRA attached each file twice.