プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle WebLogic Server JMS .NETクライアント・アプリケーションの開発
12c (12.2.1.3.0)
E90333-01
目次へ移動
目次

前
次

2 WebLogic JMS .NETクライアントの概要

この章では、WebLogic JMS .NETクライアントの概要を示し、JMS .NETクライアント・アプリケーションからWebLogic JMSリソースにアクセスする方法について解説します。また、WebLogic JMS .NET APIについても簡単に説明します。

ここでは、.NETのプログラミングおよびJMS 1.1の概念と機能に精通している読者を対象としています。

この章の内容は次のとおりです。

WebLogic JMS .NETクライアントとは

WebLogic JMS .NETクライアントは完全に管理された.NET実行時ライブラリとアプリケーション・プログラミング・インタフェース(API)です。これにより、プログラマは、WebLogic Java Message Service (JMS)アプリケーションおよびリソースにアクセスするために、.NET C#またはサポートされている他の.NETプログラミング言語を使用してクライアント・アプリケーションを作成できます。

WebLogic JMSは、JMS 1.1仕様(http://www.oracle.com/technetwork/java/jms/index.htmlを参照)を完全にサポートするエンタープライズ・レベルのメッセージング・システムで、標準のJMS APIに加えて、多数のWebLogic JMS拡張も提供しています。WebLogic ServerのJMSの付加価値機能のサマリーは、Oracle WebLogic Server JMSリソースの管理で、WebLogic ServerのJMSの付加価値機能を参照してください。

JMS .NET APIのすべてのクラスとインタフェースの詳細は、Oracle WebLogic Server Microsoft .NETメッセージングAPIドキュメントを参照してください。

WebLogic JMS .NETクライアントはWebLogic Serverに付属しており、Microsoft .NET Frameworkでサポートされます。インストールの詳細は、「WebLogic JMS .NETクライアント・ライブラリのインストールおよびコピー」で説明します。

サポートされるJMSの機能

このリリースでは、WebLogic JMS .NETクライアントは、JMSバージョン1.1仕様(http://www.oracle.com/technetwork/java/jms/index.htmlを参照)の主な標準機能をサポートします。サポートされないJMS 1.1の標準機能のリストについては、「WebLogic JMS .NETクライアントの使用に関する制限事項」を参照してください

標準のJMS 1.1仕様のサポートに加えて、WebLogic JMS .NETクライアントはいくつかのWebLogic JMS拡張機能もサポートしています。サポートされる機能の詳細とJMS .NETクライアントでの使用方法については、「WebLogic JMS拡張機能の使用」を参照してください

メッセージング・モデル

WebLogic JMS .NETクライアントは以下のメッセージング・モデルをサポートしています。

  • ポイント・ツー・ポイント(PTP)メッセージング・モデル。1つのアプリケーションが1つの宛先にメッセージを送信できます。

  • パブリッシュ/サブスクライブ(pub/sub)メッセージング・モデル。1つのアプリケーションが複数のアプリケーションにメッセージを送信できます。

メッセージは永続または非永続として指定できます。

  • 永続メッセージは確実に1回のみ配信されることが保証されています。メッセージはJMSサーバーに障害が起きても失われず、一度アプリケーションで確認応答されれば再配信されることはありません。メッセージは、ファイルまたはデータベースに正常に書き込まれるまで送信されたとは判断されません。

  • 非永続メッセージは格納されません。最大で1回配信されることが保証されています。メッセージはJMSプロバイダで障害が起きると失われ、再配信されることはありません。

詳細は、Oracle WebLogic Server JMSアプリケーションの開発メッセージング・モデルの理解に関する項を参照してください。

メッセージ・タイプ

JMS 1.1仕様(http://www.oracle.com/technetwork/java/jms/index.htmlを参照)に定義されているように、WebLogic JMS .NETクライアントは次のメッセージ・タイプをサポートします。

  • Message

  • BytesMessage

  • MapMessage

  • ObjectMessage (同じ言語で記述されたプロデューサとコンシューマの間のみ)

  • StreamMessage

  • TextMessage

WebLogic JMSで提供されているXMLMessageタイプの拡張機能はこのリリースではサポートされていません。このタイプのメッセージを.NETクライアントで受信した場合は、自動的にTextMessageタイプに変換されます。

サポートされるメッセージ・タイプの使用の詳細は、「異なる言語環境間でのメッセージの交換」を参照してください

WebLogic JMS .NETクライアントの仕組み

次の図では、.NET Framework CLRで実行されるJMS .NETクライアント・アプリケーションがWebLogic ServerにデプロイされているJMSリソースにアクセスする仕組みを示します。

図2-1 JMS .NETクライアントのアーキテクチャ

図2-1の説明が続きます
「図2-1 JMS .NETクライアントのアーキテクチャ」の説明

注意:

図2-1に示されたWebLogicコンポーネントはすべてWebLogic Server 10gリリース3以降の単一のインスタンスにホストされています。複数サーバーまたはクラスタの構成では、WebLogic Serverの各コンポーネントはWebLogic Serverの別々のインスタンス上で実行できます。ただし、JMS .NETクライアント・ホストはWebLogic Server 10gリリース3以降で実行する必要があり、接続ホストとJMSサーバーはWebLogic Server 9.x以降の同じクラスタ内で実行する必要があります。

図に示された主なコンポーネントは以下のとおりです。

  • C#またはサポートされている.NETプログラミング言語で記述されたJMS .NETクライアント。.NET Framework CLR内で実行されます。宛先に対してメッセージを生成したり、宛先からのメッセージを消費したりします。

  • WebLogic Server 10gリリース3以降で実行されるJMS .NETクライアント・ホスト。JMS .NETクライアントとWebLogic JMSの間のインタフェースを提供します。

  • .NETクライアント・ホスト上に構成されている標準のT3プロトコル・リスニング・ポート。

  • 1つまたは複数の接続ホスト(つまり、接続ファクトリ)。

  • 一連のJMS宛先が定義されている1つまたは複数のJMSサーバー。

JMSサーバーへのトラフィックは常に、.NETクライアントからJMS .NETクライアント・ホストを通じて接続ホストへ、さらにJMSサーバーへとルーティングされます。JMS .NETクライアントへのトラフィックは常に、JMSサーバーから接続ホストへ、さらにJMS .NETクライアント・ホストを通じて.NETクライアントへとルーティングされます。

図2-1に示したような、JMS .NETクライアントとJMSサーバーの間のメッセージ交換のプロセスを簡単にまとめると、次のようになります。

  1. JMS .NETクライアントは、WebLogic Server 10gリリース3以降で実行されているJMS .NETクライアント・ホストとの間に最初のT3ネットワーク接続を確立します。
  2. JMS .NETクライアントはJMS .NETクライアント・ホストから接続ファクトリを取得します。
  3. JMS .NETクライアント・ホストはJNDIから接続ファクトリを取得します。
  4. JMS .NETクライアントは接続ファクトリを使用して接続を作成します。JMS .NETクライアント・ホストから、接続ファクトリが存在する接続ホストの1つに向かって接続が確立されます。
  5. JMS .NETクライアントがメッセージを送信(生成)すると、JMS .NETクライアント・ホストはそのメッセージを接続ホストに送信します。接続ホストは、宛先をホストしているJMSサーバーにメッセージをルーティングします。一方、JMS .NETクライアントがメッセージを受信(消費)する場合は、接続ホストが、宛先をホストしているJMSサーバーからJMS .NETクライアント・ホストへメッセージをルーティングします。JMS .NETクライアント・ホストはJMS .NETクライアントへメッセージを渡します。

JMS .NETクライアント・アプリケーションの作成手順と例については、「WebLogic JMS .NET APIを使用した基本的なJMSアプリケーションの開発」で説明しています。

WebLogic Serverの構成

以下の節では、JMS .NETクライアント・アプリケーションがJMSリソースにアクセスするために必要な構成について説明します。

リスニング・ポートの構成

JMS .NETクライアントでは、JMS .NETクライアント・ホストをホストしているWebLogic Serverインスタンスで、T3プロトコル用に構成されたリスニング・ポートが有効になっている必要があります。WebLogic Serverをインストールしたときに、デフォルト・ポートはT3プロトコルを使用するように構成されます。デフォルト・ポートの構成は変更したり無効にしたりできるため、システム管理者はサーバーのデフォルト・ポートでT3プロトコルが有効になっていることを確認するか、T3プロトコルをサポートするネットワーク・チャネルを追加する必要があります。構成情報については、以下のトピックを参照してください。

JMS .NETクライアント用のJMSリソースの構成

JMS .NETクライアント・アプリケーションがWebLogic ServerにデプロイされているJMSリソースにアクセスする前に、WebLogic Serverシステム管理者は必要なJMSリソース(接続ファクトリ、JMSサーバー、宛先など)を構成しておく必要があります。JMSリソースの構成手順については、以下を参照してください:

システム・プロパティの設定

12.1.3より前のWebLogic Serverで開発されたJMS .NETクライアントをWebLogic Server 12.1.3と相互運用できるようにするには、WebLogic Server 12.1.3インスタンスで次のシステム・プロパティを設定します。

-Dweblogic.protocol.t3.login.replyWithRel10Content=true

12.1.3より前のWebLogic Serverで開発された既存のJMS .NETクライアントとの相互運用性のデフォルト値はfalseです。

以前のリリースのWebLogic Serverとの相互運用

JMS .NETクライアントはWebLogic Server 10gリリース3以降とのみ直接通信できます。図2-2に示すように、JMS .NETクライアント・ホストはWebLogic Server 10gリリース3以降で実行する必要があります。ただし、接続ホストとJMSサーバーはWebLogic Server 9.x以降で実行できます。接続ホストとJMSサーバーは両方とも同じクラスタ内に配置する必要があります。

図2-2 JMS .NETクライアントの相互運用性

図2-2の説明が続きます
「図2-2 JMS .NETクライアントの相互運用性」の説明

宛先がWebLogic Server 9.x以降で実行されていて、WebLogic Server 10gリリース3以降で実行されている.NETクライアント・ホストと同じクラスタ内にない場合、その宛先にアクセスするには、WebLogic Serverのリモート・インスタンスを外部サーバーとして構成する必要があります。詳細は、『Oracle WebLogic Server JMSリソースの管理』外部サーバー・リソースからサード・パーティJMSプロバイダへのアクセスの構成に関する項を参照してください。

注意:

JMS Javaクライアントを使用し、外部サーバーを使用してサード・パーティのJMSプロバイダに接続することもできますが、この機能はWebLogic JMS .NETクライアントではサポートされていません。

WebLogic JMS .NET APIの理解

以下の表では、JMS .NETクライアント・アプリケーションの作成に使用できるJMS .NET APIの主要なクラスとインタフェースを示します。JMS .NET APIのすべてのクラスとインタフェースの詳細は、Oracle WebLogic Server Microsoft .NETメッセージングAPIドキュメントを参照してください。

表2-1 WebLogic JMS .NETのクラスとインタフェース

インタフェース/クラス 説明
Constants

Constantsのクラス群は、APIで一般的に使用される定数や列挙値を定義するために使用します。

ContextFactory

ContextFactoryはコンテキストの作成に使用します。コンテキストは、.NETクライアントからクライアント・ホストへのネットワーク接続。

IContext

IContextオブジェクトは.NETクライアントからクライアント・ホストへのネットワーク接続を表現します。宛先や接続ファクトリのルックアップ、不要になったネットワーク接続のクローズに使用されます。

IConnectionFactory

IConnectionFactoryオブジェクトはJMS接続構成情報をカプセル化します。JMS .NETクライアントはIContextオブジェクトを使用して接続ファクトリをルックアップし、その接続ファクトリを使用してJMSサーバーとのIConnectionを作成します。

IConnection

IConnectionオブジェクトはJMS .NETクライアント・ホストとJMS接続ホストの間のアクティブな接続。接続の作成時に認証が行われる場合もあります。接続はセッションを作成するために使用します。

ISession

ISessionオブジェクトはメッセージを生成および消費するためのシングル・スレッドのエンティティ。セッションでは複数のメッセージ・プロデューサとコンシューマを作成して処理できます。

IDestination

IDestinationオブジェクトはキューかトピックかを識別します。キュー宛先ではポイント・ツー・ポイント・メッセージング・モデルから、トピック宛先ではpub/subメッセージング・モデルから配信されるメッセージを管理します。

ITopic

ITopicオブジェクトは、プロバイダ固有のトピック名をカプセル化したpub/subのIDestinationです。クライアントがトピックのIDをJMS APIメソッドに指定する方法となります。IDestinationをパラメータとして使用するメソッドでは、ITopicオブジェクトを引数として使用できます。たとえば、以下のメソッドを呼び出すと、ITopicを使用してIMessageConsumerIMessageProducerを作成できます。

ISession.CreateConsumer(IDestination destination)
ISession.CreateProducer(IDestination destination)
IQueue

IQueueオブジェクトは、プロバイダ固有のキュー名をカプセル化したポイント・ツー・ポイントのIDestinationです。クライアントがキューのIDをJMS APIメソッドに指定する方法となります。

IQueueITopicは両方ともIDestinationを継承しているため、IDestinationをパラメータとして使用するメソッドでは、IQueueオブジェクトを引数として使用できます。たとえば、以下のメソッドを呼び出すと、IQueueを使用してIMessageConsumerIMessageProducerを作成できます。

ISession.CreateConsumer(IQueue queue)
ISession.CreateProducer(IQueue queue)
IMessageConsumer

JMS .NETクライアントはIMessageConsumerオブジェクトを使用して、宛先からメッセージを受信します。IMessageConsumerオブジェクトを作成するには、セッションで提供されるメッセージ・コンシューマ作成メソッドにIDestinationオブジェクトを渡します。

IMessageProducer

JMS .NETクライアントはIMessageProducerオブジェクトを使用して、宛先にメッセージを送信します。IMessageProducerオブジェクトを作成するには、セッションで提供されるメッセージ・プロデューサ作成メソッドにIDestinationオブジェクトを渡します。

IMessage

IMessageインタフェースはすべてのJMSメッセージのルート・インタフェース。すべてのメッセージで使用されるメッセージ・ヘッダーと確認応答メソッドを定義します。

JMSメッセージは以下の部分から構成されます。

ヘッダー - すべてのメッセージは同じヘッダー・フィールドのセットをサポートします。ヘッダー・フィールドには、メッセージの識別やルーティングのためにクライアントとプロバイダの両方で使用される値が格納されます。

プロパティ - 各メッセージには、アプリケーション定義のプロパティ値をサポートするための組込みの機能が含まれています。プロパティは、アプリケーション定義のメッセージ・フィルタリングをサポートするための効率的なメカニズムを提供します。

本文 - JMS APIでは複数のタイプのメッセージ本文を定義しています。現在使用されている主要なメッセージング方式に対応しています。

IMapMessage

IMapMessageオブジェクトは名前と値のペアを送信するために使用します。名前はStringオブジェクト、値はJavaおよびC#プログラミング言語のプリミティブ・データ型。名前には必ず値が必要であり、値をnullや空の文字列にすることはできません。このエントリには、名前を指定して順次的またはランダムにアクセスできます。エントリの順序は定義されません。IMapMessageIMessageインタフェースを継承し、マップを格納するメッセージ本文を追加します。

IObjectMessage

IObjectMessageオブジェクトはJavaおよびC#プログラミング言語のシリアライズ可能なオブジェクトを格納したメッセージを送信するために使用します。IMessageインタフェースを継承し、オブジェクトの1つの参照を格納した本文を追加します。C#オブジェクトをJavaプログラムから、またはJavaオブジェクトをC#プログラムから読み込むことはできません。詳細は、「異なる言語環境間でのメッセージの交換」を参照

IStreamMessage

IStreamMessageオブジェクトはJavaプログラミング言語のプリミティブ型のストリームを送信するために使用します。格納と読取りは順次的に行われます。IMessageインタフェースを継承し、ストリームのメッセージ本文を追加します。メソッドは主にjava.io.DataInputStreamjava.io.DataOutputStreamのメソッドに基づいています。

ITextMessage

ITextMessageオブジェクトはStringを格納したメッセージを送信するために使用します。IMessageインタフェースを継承し、テキストのメッセージ本文を追加したもの。

IBytesMessage

IBytesMessageオブジェクトは未解釈のバイト・ストリームを格納したメッセージを送信するために使用します。IMessageインタフェースを継承し、バイトのメッセージ本文を追加します。メッセージの受信側でバイトの解釈を行います。