JMS 2.0簡略化APIにはJMS 1.1 API (クラシックAPI)と同じ基本機能がありますが、新しいインタフェースと、いくつかのAPIの変更により、使用しやすくなりました。
簡略化APIで提供される次のインタフェースは、Oracle WebLogic Server 12.2.1リリースで実装されました。
ConnectionFactory
: Connection
を作成するためにクライアントが使用する管理対象オブジェクト。このインタフェースは、クラシックAPIによっても使用されます。
JMSContext
: メッセージの送受信に使用される、JMSプロバイダと単一スレッド・コンテキストへのアクティブな接続。
JMSProducer
: JMSContext
によって作成され、メッセージをキューまたはトピックに送信するオブジェクト。
JMSConsumer
: JMSContext
によって作成され、キューまたはトピックに送信されたメッセージを受信するオブジェクト
図5-1は、これらのオブジェクトがJMSクライアント・アプリケーション内でどのように組み合されるかを示しています。
JMS 2.0インタフェースの詳細は、http://docs.oracle.com/javaee/7/api/javax/jms/package-summary.html
の、javax.jms
パッケージのドキュメントを参照してください。
この項では、JMS 2.0仕様で導入された次のクラスについて説明します。
簡略化APIの主要なインタフェースは、JMSContext
です。これは、JMS 1.1 APIのConnection
およびSession
オブジェクトの機能を結合します。単一のJMSContext
オブジェクトを作成すると、接続、セッションおよびテキスト・メッセージを別々に作成する必要がなくなります。
JMSContext
インタフェースに関する詳細は、http://docs.oracle.com/javaee/7/api/javax/jms/JMSContext.html
を参照してください。
weblogic.jms.extensions
パッケージのWLJMSContext
インタフェースは、javax.jms.JMSContext
がサポートしていないフィールドおよびメソッドを定義します。それは、WLConnection
およびWLSession
と同じ拡張機能を提供します。Oracle WebLogic Server Java APIリファレンスにあるWLJMSContext
のJavadocを参照してください。
簡略化APIでメッセージを送信するには、JMSProducer
オブジェクトを使用します。JMSContext
オブジェクト上でcreateProducer
メソッドをコールすることによって、JMSProducer
オブジェクトを作成できます。
注意:
JMSProducer
オブジェクトを変数に保存する必要はありません。メッセージを送信する場合、このオブジェクトを作成することをお薦めします。詳細は、「簡略化JMS APIを使用したメッセージ送信」を参照してください。
JMSProducer
インタフェースに関する詳細は、http://docs.oracle.com/javaee/7/api/javax/jms/JMSProducer.html
を参照してください。
WLJMSProducer
インタフェースは、WebLogic JMSに固有のメソッドと属性を定義します。これらの機能は、weblogic.jms.extensions
パッケージで定義されている WLSJMSProducer
インタフェースにJMSProducer
インスタンスをキャストすることによって使用できます。Oracle WebLogic Server Java APIリファレンスにあるWLJMSProducer
のJavadocを参照してください。
JMSConsumer
オブジェクトは、キューまたはトピックからメッセージを受け取ります。JMSConsumer
オブジェクトを作成するには、JMSContext
上のcreateConsumer
メソッドの1つにQueue
またはTopic
オブジェクトを渡すか、JMSContext
オブジェクト上のcreateSharedConsumer
またはcreateDurableConsumer
メソッドの1つにTopic
オブジェクトを渡します。
JMSConsumer
インタフェースに関する詳細は、http://docs.oracle.com/javaee/7/api/javax/jms/JMSConsumer.html
を参照してください。
JMSContextオブジェクト上でメッセージを送受信するメソッドに加え、JMS 2.0では、コードを簡略化するメソッドをいくつか導入します。
次の各項では、これらのメソッドについて説明します。
getBody
メソッドは、メッセージからボディを取得する簡単な方法を提供します。このメソッドは、クラシックおよび簡略化の両方のAPIに適用されます。
void onMessage(Message message){ // delivers a BytesMessage byte[] bytes = message.getBody(byte[].class); ...
詳細は次のJavadocを参照してください
予期されるボディのクラスがあらかじめわかっている場合にかぎり、receiveBody
メソッドを使用して、StreamMessage
およびMessage
を除く、任意のタイプのメッセージを受信できます。
JMSConsumer consumer = ... String body = consumer.receiveBody(String.class,1000);
詳細は次のJavadocを参照してください。
https://docs.oracle.com/javaee/7/api/javax/jms/JMSConsumer.html
単一またはゼロ個のパラメータを受け付ける、新しいcreateSession
メソッドが、javax.jms.Connection
に追加されました。createSessionメソッドを使用したセッションの作成を参照