Hello,

I know that ActiveMQ doesn't cover all JMS 2.0 specification.
Could you tell me, please, how far ActiveMQ is close to JMS 2.0 ?

I am asking this question because I am using TomEE 8.0.0 or 8.0.1 with ActiveMQ 
5.15.10 embedded.
In an stateless EJB, I inject JMSContext (working) and in a method, I have the 
following code:
         jmsContext.createProducer().send(messageQueue, 
jmsContext.createTextMessage("Test"));

The issue I have is that each time I send a text message a DynamicProducer is 
created which could be the root cause of a memory leak.

But looking at the docs:
https://javaee.github.io/javaee-spec/javadocs/javax/jms/JMSContext.html (new 
way JMS 2.0)
https://javaee.github.io/javaee-spec/javadocs/javax/jms/Session.html (old way 
JMS 1.1)

I find something not coherent. Indeed:

·         Using Session (JMS 1.1), we are able to create a Producer targeting a 
destination : 
createProducer<https://javaee.github.io/javaee-spec/javadocs/javax/jms/Session.html#createProducer-javax.jms.Destination->(Destination<https://javaee.github.io/javaee-spec/javadocs/javax/jms/Destination.html>
 destination). So no, dynamic producer is created.

·         Using JMSContext (JMS 2.0) , we are able to create a Producer but 
with no destination 
(createProducer<https://javaee.github.io/javaee-spec/javadocs/javax/jms/JMSContext.html#createProducer-->())
 => dynamic production creation.
Why don't we have on JMSContext the same method 
createProducer<https://javaee.github.io/javaee-spec/javadocs/javax/jms/Session.html#createProducer-javax.jms.Destination->(Destination<https://javaee.github.io/javaee-spec/javadocs/javax/jms/Destination.html>
 destination) ?

But I also don't get that, according to the JMS 2.0 specification, the 
JMSContext injected has a Transaction scope => this mean that after the end of 
the method, the JMSContext should be closed so that the dynamic producer.
Do you agree with the behavior described above. If so, Is it an ActiveMQ issue 
or a TomEE issue ?

Looking at https://www.oracle.com/technical-resources/articles/java/jms20.html
A sample is provided in § Injecting a JMSContext into a Java EE Application:
              context.send(dataQueue, body);   => but the JMSContext java doc I 
didn't find any send method. So I guess it's a mistake, right ?

Best Regards.

Reply via email to