ActiveMQ は JMS2.0 をサポートしていない(2015/12/14時点)
タイトルのとおりです。気を付けましょう。
問題点
JavaEE 7 で JMS 2.0 が導入されましたが、ActiveMQ の Resource Adapter がサポートしている JMS のバージョンは 1.1 までとなっています(少なくとも activemq-rar-5.13.0.rar はそうです)。
@JMSContext @JMSConnectionFactory
これらのアノテーションを Wildfly 8.1 + ActiveMQ で使おうとしたら、デプロイで微妙に失敗してハマりました。 動きそうで動かない。。
アプリケーションで JMS 2.0 の機能を使ってても、ビルドまでは確実にできちゃうし、場合によってはデプロイもできちゃうのでたちが悪いです。
例えば、
Session session = connection.createSession();
これはビルドがOKでデプロイもOKなのですが、悲しいかな、動かすとNGです。このような場合は
Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
と書く必要があります。こうすれば JMS 1.1 のメソッドしか呼び出してないので、ビルドもOKで、デプロイも当然OKで、動作もOKです。
最後に
確かに、Apache ActiveMQ ™ -- Index を見ると、いきなり JMS 1.1
って書いてあるんですけど、、早く JMS 2.0 に対応して欲しいです。