Sun Java System Message Queue 4.2 リリースノート

XML ペイロードメッセージのスキーマ検証

Message Queue 4.2 のこの新機能では、メッセージがブローカに送信された時点で、テキスト (オブジェクトではない) の XML メッセージの XML スキーマを検証できます。XML スキーマ (XSD) の場所は、Message Queue 送信先のプロパティーとして指定されます。XSD の場所が指定されていない場合は、XML ドキュメント内の DTD 宣言を使用して DTD 検証が実行されます。データ型および値の範囲の検証を含む XSD 検証は、DTD 検証よりも厳格です。

クライアントアプリケーションでこの新機能を使用する場合は、Java SE のバージョンを JRE 1.5 以上にアップグレードしてください。

XML スキーマ検証を有効にするには、次の物理送信先プロパティーを設定します。

表 1–5 XML スキーマ検証の物理送信先プロパティー

プロパティー 

型 

デフォルト値 

説明 

validateXMLSchemaEnabled

ブール型 

false

XML スキーマ検証が有効になっているかどうか 

false に設定されているか、または何も設定されていない場合、送信先の XML スキーマ検証は有効になっていません。

XMLSchemaURIList

文字列 

null 

XML スキーマドキュメント (XSD) URI 文字列のスペース区切りリスト 

URI は、XML スキーマ検証が有効になっている場合に使用する 1 つ以上の XSD の場所を示します。 

複数の URI を指定する場合は、この値を二重引用符で囲みます。 

例: 

http://foo/flap.xsd http://test.com/test.xsd

このプロパティーが設定されていないか、または null の場合に XML 検証が有効になっていると、XML ドキュメント内で指定された DTD を使用して XML 検証が実行されます。 

reloadXMLSchemaOnFailure

ブール型 

false

障害発生時に XML スキーマを再読み込みするかどうか 

false に設定されているか、または何も設定されていない場合は、検証で障害が発生したときにスキーマの再読み込みは行われません。 

XML 検証が有効になっている場合、Message Queue クライアントランタイムは、XML メッセージをブローカに送信する前に、指定された XSD (XSD が指定されていない場合は DTD) に照らしたメッセージの検証を試みます。指定されたスキーマが見つからないか、またはメッセージを検証できない場合は、メッセージは送信されずに、例外がスローされます。

送信先の作成時または更新時に、imqcmd create dst または imqcmd update dst コマンドを使用して、XML 検証プロパティーを設定できます。XML 検証プロパティーは、送信先がアクティブでないときに設定してください。つまり、送信先のコンシューマとプロデューサがないとき、および送信先にメッセージが存在しないときです。


注 –

実行時に XSD にアクセスできない場合は、送信先がアクティブなときに XMLSchemaURIList を変更しなければならないことがあります。


たとえばプロデューサが送信先に接続されている場合など、送信先がアクティブなときに XML 検証プロパティーのいずれかが設定されると、その変更は、プロデューサがブローカに再接続されるまで有効になりません。同様に、アプリケーションの要件 が変更されたために XSD が変更された場合は、変更後の XSD に基づいて XML メッセージを生成するすべてのクライアントアプリケーションをブローカに再接続してください。

reloadXMLSchemaOnFailure プロパティーが true に設定されているときに XML 検証に失敗すると、Message Queue クライアントランタイムは、メッセージを再度検証する前に XSD の再読み込みを試みます。再読み込みした XSD を使用した検証に失敗すると、クライアントランタイムは例外をスローします。