ストレージ管理

このトピックでは、C プログラミング言語で WebSphere Message Broker のユーザー定義拡張機能を開発する際に 考慮する必要のあるストレージ管理に関連する問題を扱います。 Java プログラミング言語を使用してユーザー定義拡張機能を開発している場合、 標準 Java ストレージ管理メソッドを使用できます。

ユーザー定義拡張機能が割り振るすべてのメモリーは、ユーザー定義拡張機能によって解放される必要があります。 実行時のノードの構成により、cniCreateNodeContext が呼び出され、 そのことによってユーザー定義拡張機能は、 ノード・インスタンス特定のデータ・エリアを割り振ってコンテキストを保管します。 コンテキストのアドレスはメッセージ・ブローカーに戻され、 内部メソッドによりユーザー定義拡張機能が呼び出されるときにブローカーから戻されます。 したがって、C ユーザー定義拡張機能は関数処理で正しいコンテキストを見つけ、使用できます。

メッセージ・ブローカーは、C++ オブジェクトのアドレスをユーザー定義拡張機能に渡します。 これらは単に、後続の関数呼び出しで戻されるハンドルとして使用されることを意図しています。 C ユーザー定義拡張機能が、例えば free 関数を使用して ストレージの解放を試行することによって、 このポインターをどんな方法であれ操作したり使用したりしないようにするべきです。 そのようなアクションによって、メッセージ・ブローカーは予測不能な動作をします。

cniCreateNodeContext インプリメンテーション関数は、 基礎になるノード・オブジェクトが内部的に構成されるときにはいつでも呼び出されます。 これは、ユーザー定義ノードを使用するメッセージ・フローでブローカーが定義されるときに実行されます。 これは、スレッドを作成 (または再利用) してノードを含むメッセージ・フロー・インスタンスを 実行するのと必ずしも同じアクティビティーではないということを覚えておくことは重要です。 実際、メッセージ・フローを実行しているスレッドの数に関係なく、 cniCreateNodeContext 関数はメッセージ・フローの構成中に一度だけ呼び出されます。

同様の考慮事項がユーザー定義のパーサー、および対応するインプリメンテーション関数 cpiCreateContext にも適用されます。

関連概念
ユーザー定義拡張機能
ユーザー定義のパーサー
関連資料
cpiCreateContext
cniCreateNodeContext
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック
Copyright IBM Corporation 1999, 2006 最終更新: 08/21/2006
as01440_