ユーザー定義ノードを開発するときは、以下の制限と要因を考慮してください。
- C ユーザー定義ノードの Java™ へのインターフェースと、JNI ラッパーの提供は、サポートされていません。 この制限があるのは、ブローカーが内部で JVM を初期化する (したがって、ユーザー定義拡張機能インターフェースでその JVM を使用できない) からです。 JVM は、ブローカーの要件に合わせたさまざまな固有のパラメーターで初期化されます。 プロセスには 1 つの JVM しか存在しないので、最初に JVM を初期化するユーザーがこれらのパラメーターを指定します。 ユーザー定義ノードが Java を使用し、ブローカーが最初に初期化される場合、これらのパラメーターはユーザー定義ノードに適切でない場合があります。 ユーザー定義ノードがブローカーの開始前に JVM を作成する場合、ブローカーは正しく機能しない場合があります。
- ユーザー定義入力ノードは、XML、BLOB、および WebSphere MQ パーサーのみをサポートできます。
- オペレーティング・システムに固有の機能は使用しないでください。
この条件に合わせてコーディングすれば、ユーザー定義拡張機能は、ソース・コードを変更しなくてもさまざまなオペレーティング・システムで動作できます。
- ユーザー定義ノードは、デフォルト以外のスキーマに必ず配置してください。ブローカー・スキーマに配置したユーザー定義ノードは、他のメッセージ・フローからはスキーマ修飾名で参照されるようになるからです。 例えば、ErrorHandler という名前のユーザー定義ノードをブローカー・スキーマ com.ibm.mb.toolkit に配置すると、そのユーザー定義ノードは com.ibm.mb.toolkit.ErrorHandler という名前で参照されます。
別のプロバイダーにも ErrorHandler という名前のエラー・ハンドラーがあり、そのエラー・ハンドラーがブローカー・スキーマ com.xxx.product に配置されていると、そのエラー・ハンドラーは com.xxx.product.ErrorHandler という名前で参照されます。
一方、デフォルトのスキーマに配置されているユーザー定義ノードは、名前だけでアドレス指定されます。
したがって、2 つのプロバイダーが 2 つの無関係のエラー・ハンドラーを開発した場合に、その両方が ErrorHandler という名前で、両方ともデフォルトのスキーマに配置されていると、その両方のユーザー定義ノードが第 3 のユーザーのプラグイン・スペースに入った場合に、ErrorHandler の参照があいまいになってしまいます。
- サブフローを使用してユーザー定義ノードを作成する場合は、ユーザー定義ノードとしてのサブフローの使用のトピックにある制限のセクションを参照してください。
ユーザー定義ノードをインプリメントするには、以下のタスクを指定された順に完了してください。