Diese neue Funktion in Message Queue 4.2 ermöglicht die Validierung des Inhalts einer Text-XML-Nachricht (keine Objektnachrichten) anhand eines XML-Schemas an der Stelle, an der die Nachricht an den Broker gesendet wird. Der Speicherort des XML-Schemas (XSD) wird als Eigenschaft eines Message Queue-Ziels angegeben. Wenn kein XSD-Speicherort angegeben wurde, wird die DTD-Deklaration innerhalb des XML-Dokuments zur Durchführung der DTD-Validierung verwendet. (XSD-Validierung, die Datentyp und Wertebereichsvalidierung beinhaltet, ist strenger als DTD-Validierung.)
Client-Anwendungen, die diese neue Funktion verwenden, sollten die Java SE-Version auf JRE 1.5 oder höher aufrüsten.
Zur Aktivierung der XML-Schemavalidierung legen sie folgende Eigenschaften für das physische Ziel fest:
Tabelle 1–5 Eigenschaften des physischen Ziels für die XML-Schemavalidierung
Eigenschaft |
Typ |
Standardwert |
Beschreibung |
---|---|---|---|
validateXMLSchemaEnabled |
Boolesch |
false |
Ist XML-Schemavalidierung aktiviert? Wenn dieser Wert auf false (falsch) gesetzt oder gar nicht festgelegt wurde, wird die XML-Schemavalidierung nicht für das Ziel aktiviert. |
XMLSchemaURIList |
String |
Null |
Leerzeichengetrennte Liste der URI-Zeichenfolgen für XML Schema Document (XSD) Die URIs verweisen auf den Speicherort einer oder mehrerer XSDs zur Verwendung mit der XML-Schemavalidierung, sofern aktiviert Verwenden Sie doppelte Leerzeichen um diesen Wert, wenn mehrere URIs angegeben werden. Beispiel: âhttp://foo/flap.xsd http://test.com/test.xsdâ Wenn diese Eigenschaft nicht festgelegt oder NULL ist und die XML_Validierung aktiviert wurde, wird die XML-Validierung mithilfe eines im XML-Dokument angegebenen DTD durchgeführt. |
reloadXMLSchemaOnFailure |
Boolesch |
false |
Erneutes Laden des XML-Schemas bei Versagen aktiviert? Wenn dieser Wert auf false (falsch) gesetzt oder gar nicht festgelegt wurde, wird das Schema nicht erneut geladen, wenn die Validierung fehlschlägt. |
Wenn die XML-Validierung aktiviert ist, versucht die Message Queue-Client-Laufzeit, eine XML-Nachricht anhand der angegebenen XSDs (oder anhand des DTD, wenn kein XSD angegeben wurde) zu validieren, bevor sie an den Broker gesendet wird. Wenn das angegebene Schema nicht gefunden oder die Nachricht nicht validiert werden kann, wird die Nachricht nicht gesendet, und eine Ausnahme wird ausgelöst.
Die XML-Validierungseigenschaften können mit dem Befehl imqcmd create dst bwz. imqcmd update dst zum Zeitpunkt der Zielerstellung bzw. -aktualisierung festgelegt werden. Die XML-Validierungseigenschaften sollten festgelegt werden, wenn ein Ziel inaktiv ist: wenn es also keine Konsumenten und Produzenten aufweist und wenn sich keine Nachrichten in dem Ziel befinden.
Wenn ein XSD zur Laufzeit nicht zugänglich ist, kann es erforderlich sein, die XMLSchemaURIList zu bearbeiten, während ein Ziel aktiv ist.
Wenn eine der XML-Validierungseigenschaften festgelegt ist, während ein Ziel aktiv ist (beispielsweise, wenn ein Produzent mit dem Ziel verbunden ist), wird die Änderung erst wirksam, wenn der Produzent erneut eine Verbindung zum Broker herstellt. Ebenso gilt: Wenn infolge einer Änderung der Anwendungsanforderungen ein XSD geändert wird, müssen alle Client-Anwendungen, die auf der Grundlage des geänderten XSD XML-Nachrichten erstellen, erneut eine Verbindung zum Broker herstellen.
Wenn die Eigenschaft reloadXMLSchemaOnFailure auf true (wahr) gesetzt wird und die XML-Validierung fehlschlägt, versucht die Message Queue-Client-Laufzeit, das XSD erneut zu laden, bevor der erneute Versuch unternommen wird, eine Nachricht zu validieren. Die Client-Laufzeit löst eine Ausnahme aus, wenn die Validierung mithilfe der neu geladenen SXD fehlschlägt.