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.
- ResourceAdapter
- ManagedConnectionFactory
- ActivationSpec
- AdministeredObject
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.

Annotationen für integrierte Integritätsbedingungen

- @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>
<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.