Bean Validation in RAR-Modulen

WebSphere Application Server validiert JavaBeans-Integritätsbedingungen für RAR-Dateien (Resource Adapter Archive) gemäß der Spezifikation Java™ Connector Architecture (JCA) Version 1.6.

Ressourcenadapter können die Validierungsvoraussetzungen von Konfigurationseigenschaften für den Anwendungsserver über Annotationen im Quellcode des Ressourcenadapters und/oder Integritätsbedingungsspezifikationen in einem Deskriptor für Ressourcenadaptervalidierung angeben. Wenn Sie diese Integritätsbedingungen angeben, können Ressourcenadapter die integrierten Bean-Validation-Integritätsbedingungen, die mit dem Anwendungsserver bereitgestellt werden, und/oder angepasste Bean-Validation-Integritätsbedingungen, die vom Anwendungsentwickler oder einer anderen Partei angegeben werden, verwenden. Entwickler von Ressourcenadaptern können Integritätsbedingungen auf die Felder und JavaBeans-konforme Eigenschaften der folgenden JCA-Typen anwenden:
  • ResourceAdapter
  • ManagedConnectionFactory
  • ActivationSpec
  • AdministeredObject
Zur Laufzeit erstellt der Anwendungsserver Instanzen der vom Ressourcenadapter deklarierten Beantypen. Jede Instanz wird direkt nach der Konfiguration ihrer Konfigurationseigenschaften validiert, bevor die Instanz in Betrieb genommen wird.

Bei der Validierung einer RAR-Bean erstellt der Anwendungsserver eine Instanz einer Validatorfactory entsprechend dem vom Anwendungsserver erkannten Bean-Validation-Implementierungsdeskriptor. Anschließend wird eine Validatorinstanz von der Factory abgerufen und für die Validierung der Beaninstanz verwendet.

Wenn die Validierung scheitert, löst der Anwendungsserver eine Ausnahme wegen ungültiger Integritätsbedingungen und zeichnet alle Verstöße im Systemprotokoll auf. Die Auswirkungen der Ausnahme für jeden RAR-Beantyp und die Fehlerbestimmungsinformationen sind im Artikel "Fehlerbehebung für Bean Validation in RAR-Modulen" beschrieben.
Fehler vermeiden Fehler vermeiden: Die Spezifikation "Bean Validation" setzt voraus, dass im Klassenpfad nur eine einzige Datei validation.xml sichtbar ist. Diese Voraussetzung ist nicht erfüllt, sobald zwei oder mehr eigenständige RAR-Dateien einen Validierungsdeskriptor bereitstellen. Weitere Informationen finden Sie im Abschnitt "RAR-Bean-Validation-Deskriptor" in diesem Artikel. Wenn mehrere Dateien validation.xml für die Klassenlader von Application Server sichtbar sind, können Application Server oder Anwendungsmodule unter Umständen nicht die Standard-ValidatorFactory abrufen und damit keine Beanvaldierung vornehmen. Der Server kann beispielsweise die Beans einer in eine Anwendung eingebetteten RAD-Datei nicht prüfen, wenn die eingebettete RAR-Datei keine Validierungskonfiguration hat und zwei oder mehr eigenständige RAR-Dateien Konfigurationen bereitstellen. Zur Vermeidung von Problemen installieren Sie eigenständige RAR-Dateien, die einen Bean-Validation-Deskriptor bereitstellen, isoliert, sofern dies möglich ist.gotcha

Annotationen für integrierte Integritätsbedingungen

Bewährtes Verfahren Bewährtes Verfahren: Verwenden Sie Annotationen für integrierte Integritätsbedingungen, um die Einstellmöglichkeiten und verbindliche Attribute von Konfigurationseigenschaften anstelle angepasster Annotationen für denselben Zweck anzugeben. Die folgenden Integritätsbedingungen sind hilfreich, aber Sie können alle integrierten Bean-Validation-Integritätsbedingungen verwenden. Eine vollständige Liste der Integritätsbedingungen finden Sie im Artikel Integrierte Integritätsbedingungen für Bean Validation.bprac
  • @Min

    Gibt den Mindestwert der mit dieser Annotation dekorierten Konfigurationseigenschaft an. Der Wert muss größer-gleich dem angegebenen Mindestwert sein.

  • @Max

    Gibt den Maximalwert der mit dieser Annotation dekorierten Konfigurationseigenschaft an. Der Wert muss kleiner-gleich dem angegebenen Mindestwert sein.

  • @Size

    Gibt den gültigen Wertebereich für die mit dieser Annotation dekorierten Konfigurationseigenschaft an. Der Wert muss größer-gleich dem angegebenen Mindestwert und kleiner-gleich dem angegebenen Maximalwert sein.

  • @NotNull

    Gibt an, dass der Wert der mit dieser Annotation dekorierten Konfigurationseigenschaft nicht null sein dar. Das bedeutet, dass die Eigenschaft erforderlich ist.

Das folgende Beispiel ist eine RAR-Beanklasse, die mit Annotationen für integrierte Integritätsbedingungen dekoriert sind.

Der Wert der Konfigurationseigenschaft "serverName" darf nicht null sein, und der Wert der Eigenschaft "instanceCount" muss mindestens 1 sein, wenn der Anwendungsserver eine Instanz der Klasse "MyConnector" erstellt und konfiguriert. Andernfalls tritt eine Ausnahme wegen ungültiger Integritätsbedingungen ein, und im Fall einer ResourceAdapter-Bean wird der Ressourcenadapter nicht gestartet. Weitere Informationen finden Sie im Artikel "Fehlerbehebung für die Bean Validation in RAR-Modulen".

package com.my.company;

@Connector(…)
public class MyConnector implements ResourceAdapter, Serializable 
{
		@ConfigProperty(type=java.lang.String.class,defaultValue="WAS")
		private String serverName;

		@NotNull() 
		public String getServerName() {return serverName;}

		private Integer instanceCount = 0;

		@Min(value=1)
		public Integer getInstanceCount() {return instanceCount;}
	…

Bean-Validation-Deskriptor für RAR-Module

Bean-Validation-Integritätsbedingungen können über einen XML-Deskriptor deklariert werden, der mit einem RAR-Modul bereitgestellt wird. Im einfachsten Fall setzt sich ein Bean-Validation-Deskriptor für RAR-Module aus der in der Datei "validation.xml" deklarierten Validierungskonfiguration und keiner oder mehreren XML-Dateien zusammen, in denen Bean-Validation-Integritätsbedingungen für RAR-Module deklariert sind. Dateien, die Deklarationen von Integritätsbedingungen enthalten, werden in den constraint-mapping-Elementen der Validierungskonfiguration (validation.xml) angegeben.

Sie müssen den Bean-Validation-Deskriptor in das Verzeichnis META-INF eines RAR-Moduls packen. Alle angepassten Annotationsklassen für Integritätsbedingungen, die im Bean-Validation-Deskriptor deklariert werden, müssen ebenfalls in das RAR-Modul gepackt werden.

Das folgende Beispiel zeigt einen einfachen RAR-Validation-Deskriptor für RAR-Module, in dem Metadaten für Integritätsbedingungen wie den Code im Abschnitt "Annotationen für integrierte Integritätsbedingungen" deklariert sind.

<?xml version="1.0" encoding="UTF-8"?>
<validation-config
				xmlns=http://jboss.org/xml/ns/javax/validation/configuration
 		xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
 				xsi:schemaLocation=http://jboss.org/xml/ns/javax/validation/configuration validation-configuration-1.0.xsd>
<constraint-mapping>META-INF/constraints.xml</constraint-mapping>
</validation-config>
Die XML-Datei mit den Integritätsbedingungen befindet sich auch im Verzeichnis META-INF und sieht folgendermaßen aus:
<constraint-mappings
		xmlns=http://jboss.org/xml/ns/javax/validation/mapping
	xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
		xsi:schemaLocation=http://jboss.org/xml/ns/javax/validation/mapping validation-mapping-1.0.xsd>
<default-package>com.my.company</default-package>
<bean class="MyConnector" ignore-annotations="true">
		<field name="serverName">
		<valid/>
				<!-- @NotNull() -->
				<constraint annotation="javax.validation.constraints.NotNull">
						<message>Value is not null</message>
				</constraint>
		</field>
		<field name="instanceCount">
		<valid/>
				<!-- @Min(1) -->
				<constraint annotation="javax.validation.constraints.Min">
								<message>Minimum possible value is 1</message>
								<element name="value">1</element>
					</constraint>
			</field>
	</bean>
<constraint-mapping>
Das gepackte RAR-Modul MyResourceAdapter.rar gleicht dem folgenden Beispiel.
my/
  company/
    MyConnector.class
. . .
META-INF
  /validation.xml
  /constraints.xml

Bean Validation anderer Anbieter

WebSphere Application Server unterstützt die Verwendung verschiedener Bean-Validation-Implementierungen. Wenn ein Ressourcenadapter eine andere Bean-Validation-Implementierung benötigt als die mit dem Produkt bereitgestellte Implementierung und die RAR-Datei die Bean-Validation-Implementierung bereitstellt, müssen Sie die JAR-Datei, die die Bean-Validation-Implementierung enthält, in das Stammverzeichnis des RAR-Moduls packen.

Das RAR-Modul muss außerdem einen einzigen Bean-Validation-Konfigurationsdeskriptor (validation.xml) im Verzeichnis META-INF des RAR-Moduls oder im Verzeichnis META-INF/services der Bean-Validation-JAR-Datei enthalten (Dateien in beiden Verzeichnissen sind nicht zulässig).

Erkennung der Bean-Validation-Konfiguration für RAR-Module

Bei der Validierung von RAR-Beans führt Anwendungsserver das Bootstrapping der Bean-Validation-Konfiguration, die speziell für das RAR-Modul gilt, entsprechend dem Bean-Validation-Deskriptor durch, der im Verzeichnis META-INF des RAR-Moduls bereitgestellt wird. Wenn der Deskriptor nicht vorhanden ist, führt der Server das Bootstrapping der Konfiguration unter Verwendung des ersten Bean-Validation-Deskriptors durch, der im Kontext für das Laden der RAR-Klassen gefunden wird, z. B. des Deskriptors, der in einer Bean-Validation-Implementierung eines anderen Anbieters im RAR-Modul enthalten ist. Findet der Server keinen Deskriptor, verwendet er die Standardkonfiguration für Bean Validation, die vom Produkt bereitgestellt wird.

Anschließend erstellt der Server eine Validatorfactory, die speziell für die erkannte Bean-Validation-Konfiguration gilt, und verwendet diese Factory, um Validatorinstanzen für die Validierung der RAR-Beaninstanzen zu erstellen. Wenn Sie ein RAR-Modul implementieren, das einen Bean-Validation-Deskriptor enthält, müssen Sie weitere Schritte ausführen, um sicherzustellen, dass das Klassenladeprogramm, das das RAR-Modul lädt, auch den Bean-Validation-Deskriptor und die in das RAR-Modul gepackten Klassen lädt.

Für ein integriertes RAR-Modul müssen Sie nach der Implementierung der Anwendung, die das RAR-Modul enthält, den Delegierungsmodus des Anwendungsklassenladeprogramms auf "Parent-Last (Child-First)" setzen. Weitere Informationen finden Sie im Artikel zur Konfiguration von Anwendungsklassenladeprogrammen.

Bei einem eigenständigen RAR-Modul müssen Sie das RAR-Modul als isolierten Ressourcenprovider installieren. Weitere Informationen finden Sie im Artikel zu den Einstellungen für Ressourcenadapter.


Symbol, das den Typ des Artikels anzeigt. Konzeptartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cdat_rarbeabval
Dateiname:cdat_rarbeabval.html