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.