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.

Un adaptateur de ressource peut spécifier au serveur d'applications les besoins de validation de ses propriétés de configuration à l'aide d'annotations incorporées dans son code source ou de contraintes spécifiées dans un fichier descripteur de validation qui lui est propre ; il peut aussi combiner ces deux procédés. De même, pour spécifier ces besoins de validation, l'adaptateur de ressource peut utiliser les contraintes de validation de bean fournies en standard avec Application Server ou bien des contraintes personnalisées définies par le développeur de l'adaptateur ou provenant d'un fournisseur tiers. Là encore, il est possible de combiner contraintes standard et contraintes personnalisées. Les développeurs d'adaptateurs de ressource peuvent appliquer des contraintes aux champs et aux propriétés JavaBeans des types JCA suivants :
  • ResourceAdapter
  • ManagedConnectionFactory
  • ActivationSpec
  • AdministeredObject
A l'exécution, le serveur d'applications crée des instances des types de bean déclarés par l'adaptateur de ressource. Chaque instance est immédiatement soumise à la validation, au moment même où ses propriétés de configuration sont définies, et avant son entrée en service.

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.

En cas d'échec à la validation, le serveur d'applications lance une exception de violation de contrainte et consigne toutes les violations dans le journal du système. Les effets de cette exception pour chaque type de bean de module RAR et les procédures de résolution des problèmes sont documentés dans la section Résolution des problèmes de validation des beans dans les modules RAR.
Eviter les incidents Eviter les incidents: La spécification de validation des beans impose qu'un seul fichier validation.xml soit visible dans le chemin d'accès aux classes. Cette règle est violée si au moins deux RAR autonomes fournissent un descripteur de validation. Pour plus d'informations, voir la section "Descripteur de validation des beans RAR" dans cette rubrique. Lorsque plusieurs fichiers validation.xml sont visibles par les chargeurs de classe du serveur d'applications, le serveur d'applications ou les modules d'application peuvent ne pas obtenir la fabrique de valideurs par défaut et donc valider les beans. Par exemple, le serveur ne peut pas valider les beans d'un RAR incorporé dans une application lorsque ce RAR n'a pas de configuration de validation et qu'au moins deux RAR autonomes fournissent des configurations. Pour éviter les erreurs, installez les RAR autonomes qui fournissent un descripteur de validation de bean isolé dans la mesure du possible.gotcha

Annotations de contrainte standard

Pratiques recommandées Pratiques recommandées: Pour spécifier les plages de valeurs admises et le caractère obligatoire ou non des propriétés de configuration, utilisez les annotations de contrainte standard plutôt que vos propres annotations. Les contraintes suivantes sont particulièrement utiles à cet effet, mais vous pouvez utiliser toute la palette de contraintes standard disponibles pour la validation des beans. Pour la liste complète de ces contraintes, consultez la section Contraintes standard pour la validation des beans.bprac
  • @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>
Le fichier constraints.xml est également situé dans le répertoire META-INF et ressemble à ceci :
<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.


Icône indiquant le type de rubrique Rubrique de concept



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cdat_rarbeabval
Nom du fichier : cdat_rarbeabval.html