Validation de bean dans les modules RAR
WebSphere Application Server valide les contraintes des JavaBeans contenus dans les archives d'adaptateur de ressource (RAR) en se conformant à la spécification JCA (Java™ Connector Architecture) version 1.6.
- ResourceAdapter
- ManagedConnectionFactory
- ActivationSpec
- AdministeredObject
Lors de la validation d'un bean de module RAR, le serveur d'applications crée une instance de fabrique de valideur (ValidatorFactory) conformément au descripteur de validation de bean qu'il découvre. Une instance de valideur (Validator) est alors obtenue de la fabrique et utilisée pour valider l'instance de bean.

Annotations de contrainte standard

- @Min
Indique la valeur minimale admise pour la propriété de configuration comportant cette annotation. Cette valeur doit être supérieure ou égale au minimum spécifié.
- @Max
Indique la valeur maximale admise pour la propriété de configuration comportant cette annotation. Cette valeur doit être inférieure ou égale au maximum spécifié.
- @Size
Indique la plage de valeurs admises pour la propriété de configuration comportant cette annotation. La valeur doit être supérieure ou égale au minimum spécifié et inférieure ou égale au maximum spécifié.
- @NotNull
Indique que la valeur de la propriété de configuration comportant cette annotation ne doit pas être Null. Autrement dit, la propriété est obligatoire.
L'exemple suivant est une classe de bean dans un module RAR décorée avec des annotations de contraintes standard.
La valeur de la propriété de configuration serverName ne doit pas être Null, et celle de la propriété instanceCount doit être au moins égale à 1 lorsque le serveur d'applications crée et configure une instance de la classe MyConnector. Sinon, une exception de violation de contrainte est émise et, dans le cas du bean ResourceAdapter, l'adaptateur de ressource ne démarre pas. Pour plus de détails, consultez la section Résolution des problèmes de validation des beans dans les modules RAR.
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;}
…
Descripteur de validation des beans RAR
Les contraintes de validation des beans peuvent être déclarées via un descripteur XML fourni par le module RAR qui contient les beans en question. Dans le cas le plus simple, le descripteur comprend la configuration de validation déclarée dans le fichier validation.xml et zéro, un ou plusieurs fichiers XML qui déclarent les contraintes de validation des beans dans le module RAR. Les fichiers contenant les déclarations des contraintes sont désignés dans les éléments constraint-mapping de la configuration de validation (validation.xml).
Vous devez empaqueter le descripteur de validation dans le répertoire META-INF du module RAR. De même, toute classe d'annotation de contrainte personnalisée déclarée dans le descripteur de validation doit être empaquetée dans le module RAR.
L'exemple suivant est un simple descripteur de validation de bean RAR qui déclare des métadonnées de contraintes analogues à celles du code représenté dans la section "Annotations de contrainte standard".
<?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>
Le module RAR intégré, MyResourceAdapter.rar, se présente comme suit :my/
company/
MyConnector.class
. . .
META-INF
/validation.xml
/constraints.xml
Implémentation de validation de bean fournie par un tiers
WebSphere Application Server fournit sa propre implémentation de l'API Bean Validation, mais il admet aussi l'utilisation d'implémentations tierces. Si un adaptateur de ressource nécessite une implémentation de Bean Validation autre que celle qui est fournie par Application Server, et si l'implémentation requise est fournie par le module RAR, vous devez empaqueter le fichier JAR qui contient cette implémentation dans le répertoire racine du module RAR.
Le module RAR doit aussi contenir un descripteur de configuration de validation (validation.xml) qui peut être intégré au répertoire META-INF du module RAT ou au répertoire META-INF/services du fichier JAR de validation de bean.
Découverte de la configuration de validation de bean RAR
Lors de la validation d'un bean RAR, le serveur d'applications tente d'amorcer la configuration de validation spécifique au module RAR en lisant les données du descripteur de validation fourni dans le répertoire META-INF du module RAR. Si le descripteur n'existe pas à cet endroit, le serveur amorce la configuration en utilisant le premier descripteur de validation qu'il découvre dans le contexte de chargement de classe du module RAR, par exemple celui qui est fourni dans une implémentation tierce de Bean Validation qui est empaquetée dans l'archive RAR. En dernier recours, le serveur utilise sa propre configuration de validation par défaut.
Le serveur crée alors une fabrique de valideur (ValidatorFactory) spécifique à la configuration de validation de bean découverte, puis il utilise cette fabrique pour créer des instances de Validator afin de valider les instances de bean RAR. Lorsque vous déployez un module RAR qui fournit son propre descripteur de validation de bean, vous devez effectuer certaines étapes supplémentaires pour garantir que le chargeur de classe qui charge le module RAR chargera aussi le descripteur et les classes de validation de bean empaquetées dans ce module RAR.
Dans le cas d'un module RAR intégré dans une application, une fois celle-ci déployée, vous devez régler le mode de délégation du chargeur de classe de l'application sur Parent en dernier (Enfant en premier). Pour plus d'informations, consultez la rubrique Configuration des chargeurs de classe d'application.
Dans le cas d'un module RAR autonome, vous devez installer celui-ci en tant que fournisseur de ressource isolé. Pour plus d'informations, consultez la rubrique Paramètres d'adaptateur de ressources.