4 簡略化APIプログラミング・モデルの理解
JMS 2.0簡略化APIについて
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
によって作成され、キューまたはトピックに送信されたメッセージを受信するオブジェクト
図4-1は、これらのオブジェクトがJMSクライアント・アプリケーション内でどのように組み合されるかを示しています。
JMS 2.0インタフェースの詳細は、http://docs.oracle.com/javaee/7/api/javax/jms/package-summary.html
の、javax.jms
パッケージのドキュメントを参照してください。
簡略化JMS APIの新しいインタフェース
JMS 2.0簡略化APIは、3つの新しいインタフェースで構成されています。
JMSContext
簡略化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を参照してください。
JMSProducer
簡略化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
オブジェクトは、キューまたはトピックからメッセージを受け取ります。JMSConsumer
オブジェクトを作成するには、JMSContext
上のcreateConsumer
メソッドの1つにQueue
またはTopic
オブジェクトを渡すか、JMSContext
オブジェクト上のcreateSharedConsumer
またはcreateDurableConsumer
メソッドの1つにTopic
オブジェクトを渡します。
JMSConsumer
インタフェースに関する詳細は、http://docs.oracle.com/javaee/7/api/javax/jms/JMSConsumer.html
を参照してください。
JMS 2.0でのメッセージを簡略化する新しいメソッド
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メソッドを使用したセッションの作成を参照