ActiveMQ 5.x does not support any part of JMS 2.0.  There has been talk of
it but it would require a lot of work to get there and isn't close.

For JMS 2.0 support I would recommend looking at Artemis which is the next
generation broker and already supports it.

On Mon, Feb 10, 2020 at 3:11 AM COURTAULT Francois <
francois.courta...@thalesgroup.com> wrote:

> 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