ユーザー定義のパーサーの計画

ユーザー定義のパーサーの開発前に考慮するべき概念についてお読みください。

ここに示された情報を検討して、独自のパーサーを開発する準備ができたとき、 ユーザー定義パーサーの作成にある指示を使用してパーサーを構成してください。

分析

独自のパーサーの作成を開始する前に、その目的をはっきりさせておく必要があります。ほとんどのタスクは、WebSphere® Message Broker が提供する関数を使って実行できるので、特定のタスクのためにユーザー定義のパーサーを作成する必要はないかもしれません。

ユーザー定義のパーサーを構成およびインプリメントするには、以下の質問について考慮してください。
  • ユーザー定義のパーサーを作成する必要があるか。

    WebSphere Message Broker の使用可能なパーサーが必要を満たさない場合、内部、カスタマー特有、または一般商用メッセージ形式を解析するように独自のパーサーを定義してください。

  • WebSphere Message Broker は、すでにドメインまたはメッセージ・ヘッダーにパーサーを提供しているか。

    提供されるパーサーが入力メッセージを受け入れられるメッセージ・ドメイン、および提供されるパーサーが作業できるメッセージ・ヘッダーの詳細については、パーサーを参照してください。

  • 社内使用または商用メッセージの構文は解析可能な形式を指示するか。
  • メッセージを正しく構文解析するには、パーサーとベンダー・ソフトウェアの相互作用が必要か。 その場合、このソフトウェアへのアクセスを可能にする API はスレッド化モデルを中断するか。
  • 複数パーツ、複数形式のメッセージを処理する必要があるか。

    WebSphere Message Broker は複数パーツ、複数形式のメッセージをサポートしません。 複数パーツの MRM メッセージは、 すべて同じ形式のメッセージで構成されていることが必要です。

  • 最適なパフォーマンスを提供するのはどのタイプの解析戦略か。

    WebSphere Message Broker は、パーサーがメッセージ中の関係のあるフィールドのみを解析する、部分的な構文解析をサポートします。部分的 構文解析を使用すると、システム・リソースの節約になります。

部分的および全体の構文解析

WebSphere Message Broker は、部分的構文解析をサポートします。ある 1 つのメッセージが何百もの、または何千もの個々のフィールドを含む場合、 構文解析操作を完了するにはかなりのメモリーおよびプロセッサーのリソースが必要になります。 個々のメッセージ・フローがこれらのフィールドのうちの少数のみを参照したり、あるいは全く参照しないことがあるので、すべての入力メッセージを完全に構文解析するのは非効率的です。このため、WebSphere Message Broker では、メッセージの構文解析が必要に応じてなされるようにすることができます。(それができるからといってパーサーが 1 つのステップでメッセージ全体を処理することができなくなるということはありません。 パーサーの中には 1 つのステップでメッセージ全体を処理するように作成されているものがあります。)

論理メッセージ中のそれぞれの構文エレメントには、2 つのビットが含まれ、これはエレメントのどちらかの側のすべてのエレメントが完了しているかどうか、またその子が完了しているかどうかを示します。通常、構文解析は下から上、左から右の方法で完了していきます。パーサーが特定のエレメントとその最初の子の前に来る、そのエレメントの兄弟を構文解析すると、パーサーは最初の完了ビットを 1 に設定します。同様に、エレメントの次の兄弟へのポインターが完了し、最後の子のポインターも完了すると、 もう 1 つの完了ビットが 1 に設定されます。

部分的構文解析では、ブローカーはメッセージの一部が参照されるまで待ち、それからパーサーを起動してメッセージのその部分が構文解析されるようにします。メッセージ処理ノードは、階層名を使用してメッセージ内のフィールドを参照します。 名前は、メッセージのルートから始まり、特定のエレメントがあるところまで、メッセージ・ツリーを下方に進みます。 完了ビットが設定されていないエレメントが見つかり、このエレメントからのナビゲーションがさらに必要である場合、適切なパーサー・エントリー・ポイントが呼び出され、メッセージの必要な部分が構文解析されます。メッセージの関係のある部分が構文解析され、適切なエレメントが論理メッセージ・ツリーに追加され、 問題のエレメントは完了したものとしてマークされます。

ビット・ストリーム全体を構文解析する必要がない場合、部分的構文解析を使用することができます。部分的構文解析中には、要求されたエレメントが戻されるか、 またはメッセージ・ツリーが完了とマークされて要求されたエレメントが存在しないことがわかるまで、 パーサーは繰り返し呼び出されます。

全体または部分的構文解析のどちらを実行するかの選択は、メッセージがどのように処理されるかに依存します。処理中にメッセージ内のほとんどのフィールド・エレメントがアクセスされることが予想される場合、メッセージにアクセスする試みがなされたときにそのメッセージ全体の構文解析を実行するのが通常は効率のよい方法です。特にメッセージが小さい場合はそう言えます。

しかし、処理中にメッセージ内のほとんどのフィールド・エレメントがアクセスされないことが予想される場合には、特定のフィールドにアクセスしようとするときにメッセージの部分的構文解析を実行する方がより効率的です。特にメッセージ・サイズが大きくなる場合はそう言えます。

特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009.
最終更新 : 2009-02-20 12:44:32

as01403_