| Oracle® Fusion Middleware Oracle WebLogic Server JMSアプリケーションの開発 12c (12.2.1) E70020-01 |
|
![]() 前 |
![]() 次 |
この章では、Java Message Service (JMS) 2.0仕様によって定義されるJMS簡略化APIの主要な機能を説明します。また、WebLogic ServerでのJMSアプリケーション作成用に、それがどのように実装されているかも説明します。
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のメイン・インタフェースは、JMS 1.1 APIのConnectionおよびSessionオブジェクトの機能を組み合せたJMSContextです。単一の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メソッドを使用したセッションの作成を参照