Traitement des incidents de validation de bean dans les modules RAR

Si un bean contenu dans un module RAR échoue à la validation, il n'est pas mis en service. En effet, en cas de violation des contraintes de validation, les applications sont confrontées à des problèmes de connectivité à la ressource concernée, problèmes qui peuvent varier en fonction du type de bean et de la manière dont le module RAR est déployé. Cette rubrique explique comment identifier, corriger et éviter ces problèmes connus.

Violation de contrainte de validation de bean RAR

Lors de la validation d'instances de bean RAR, en cas de violation d'une ou de plusieurs contraintes de validation, WebSphere Application Server lance une exception de violation de contrainte et consigne toutes les violations dans le journal du système. La cause de toutes les violations doit être déterminée et éliminée pour rétablir la pleine connectivité à la ressource affectée.

La première étape d'identification de la cause du problème est de consulter la documentation du fournisseur de l'adaptateur de ressource afin de déterminer quelles sont les valeurs valides pour les propriétés de configuration indiquées dans les violations constatées. Si les valeurs des propriétés en question ne sont pas valides, vous devez les reconfigurer conformément à la documentation et redémarrer l'adaptateur de ressource. Si l'adaptateur est intégré dans une application, redémarrez celle-ci ; si l'adaptateur est indépendant (autonome), redémarrez le serveur d'applications.

Si une propriété de configuration fait l'objet d'une violation de contrainte alors que sa valeur est pourtant valide d'après la documentation du fournisseur de l'adaptateur, cela peut signifier que la contrainte est mal spécifiée pour le bean ou que ce dernier ne calcule pas correctement la valeur de la propriété. Dans les deux cas, le fournisseur du module RAR doit corriger le problème.

Si le problème est dû à une définition (implémentation) de contrainte erronée ou mal conçue, il revient au fournisseur de l'implémentation de validation de bean de corriger le problème. Dans tous ces cas, si le module RAR est fourni par IBM® ou s'il provient d'un fournisseur tiers mais utilise l'implémentation de Bean Validation fournie par WebSphere Application Server, contactez le support IBM pour continuer la procédure de résolution du problème.

Beans ResourceAdapter

Un bean ResourceAdapter est validé lorsque le serveur démarre l'adaptateur de ressource Java™ 2 Connector (J2C) correspondant. En cas d'échec à la validation, le serveur rejette l'instance de ResourceAdapter et l'exception de violation de contrainte qui en résulte fait échouer l'adaptateur de ressource J2C. Les applications ne peuvent établir de connexion sortante vers la ressource, et la ressource ne peut livrer de message aux applications. Dans le cas d'un adaptateur intégré dans une application, cette dernière ne démarre pas. Les transactions en attente de validation qui mettent en jeu la ressource ne peuvent être récupérées.

L'exemple suivant est un bean ResourceAdapter, MyConnector, situé à l'adresse de segment 7efa7efa. Deux contraintes de validation sont violées. L'exception de violation de contrainte entraîne l'échec de J2CResourceAdapter_1285109360562 :
[9/29/10 10:51:24:125 CDT] 00000000 BeanValidatio E   
 J2CA0238E: JavaBean com.my.company.adapter.MyConnector@7efa7efa failed Bean Validation due to one or more invalid
 configuration settings indicated in the following list of constraint violations: 

	ConstraintViolationImpl{interpolatedMessage='The minimum size is 2', propertyPath=dataBaseName, rootBeanClass=class 
    com.my.company.adapter.MyConnector, messageTemplate='The minimum size is 2'}
	ConstraintViolationImpl{interpolatedMessage='must be greater than or equal to 10', propertyPath=idleTimeout, rootBeanClass=class
    com.my.company.adapter.MyConnector, messageTemplate='{javax.validation.constraints.Min.message}'}
…
[9/29/10 10:51:24:468 CDT] 00000000 RALifeCycleMa E   
 J2CA0128E: An Exception occurred while trying to start ResourceAdapter
  cells/IBM-46DF84D297BNode01Cell/nodes/IBM-46DF84D297BNode01/resources.xml#J2CResourceAdapter_1285109360562. The exception is: 
com.ibm.ejs.j2c.metadata.ConstraintViolationException
	at com.ibm.ejs.j2c.metadata.BeanValidationHelper.validate(
	at com.ibm.ejs.j2c.RAWrapperImpl.createAndConfigureRA(
	at com.ibm.ejs.j2c.RAWrapperImpl.startRA(
	at com.ibm.ejs.j2c.RALifeCycleManagerImpl.startRA(
	at com.ibm.ejs.j2c.RALifeCycleManagerImpl.resourceProviderEvent(
. . .

Beans ManagedConnectionFactory

Les JavaBeans ManagedConnectionFactory sont validés durant la recherche JNDI (Java Naming and Directory Interface) initiale d'une fabrique de connexions J2C.

En cas d'échec à la validation, le serveur d'applications rejette l'instance de ManagedConnectionFactory et envoie une exception de nommage à l'application qui effectue la recherche JNDI. Cette exception indique l'exception de violation de contrainte causale (javax.validation.ConstraintValidationException).

Les applications ne peuvent établir de connexion sortante vers la ressource. Les transactions en attente de validation qui ont commencé sur des connexions à la ressource ayant été créées par la fabrique de connexion ne peuvent pas être récupérées.

L'exemple suivant est un bean ManagedConnectionFactory, MyMcf, situé à l'adresse de segment 7dd07dd0. Deux contraintes de validation sont violées. La conséquence de l'exception de violation de contrainte est que l'application n'obtient pas la fabrique de connexion dont elle a besoin pour créer une connexion à la ressource, MyConnector :
[9/30/10 7:58:58:734 CDT] 00000023 BeanValidatio E  
 J2CA0238E: JavaBean com.my.company.adapter.MyMcf@7dd07dd0 failed Bean Validation due to one or more invalid
  configuration settings indicated in the following list of constraint violations: 
	ConstraintViolationImpl{interpolatedMessage='must be less than or equal to 30', propertyPath=mcfProperty2,
    rootBeanClass=class com.my.company.adapter.MyMcf, messageTemplate='{javax.validation.constraints.Max.message}'}
	ConstraintViolationImpl{interpolatedMessage='The value should be greater than 10', propertyPath=mcfProperty4,
    rootBeanClass=class com.my.company.adapter.MyMcf, messageTemplate='The value should be greater than 10'}
….
[9/30/10 7:58:58:765 CDT] 00000023 ConnectionFac E  
 J2CA0009E: An exception occurred while trying to instantiate the ManagedConnectionFactory class com.my.company.adapter.MyMcf
  used by resource j2c/MyConnector : com.ibm.ejs.j2c.metadata.ConstraintViolationException
	at com.ibm.ejs.j2c.metadata.BeanValidationHelper.validate(
	at com.ibm.ejs.j2c.ServerFunction.validate(
	at com.ibm.ejs.j2c.J2CUtilityClass.createMCFEntry(
	…
	at javax.naming.InitialContext.lookup(
	at com.my.company.app.MyEjbImpl.testJbv(
. . .     

Violations de contrainte pour les beans ActivationSpec

Les beans ActivationSpec sont validés au démarrage de l'application. C'est à ce moment-là que le serveur d'applications active initialement les points d'extrémité de message liés aux spécifications d'activation J2C. Ces spécifications d'activation contiennent le nom de la classe de bean dans leur configuration. En cas d'échec à la validation, le point d'extrémité de message n'est pas activé et l'exception de violation de contrainte qui en résulte fait échouer l'application qui héberge ce point d'extrémité.

Puisque l'adaptateur de ressource J2C qui contient la spécification d'activation est déjà démarré, les applications peuvent quand même établir des connexions à la ressource. La ressource peut, de son côté, livrer des messages aux points d'extrémité qui ont été activés correctement. Si la spécification d'activation est définie dans un adaptateur de ressource intégré dans une application, le serveur arrête l'adaptateur en même temps qu'il arrête l'application. Les messages transactionnels en échec qui ont été émis par des instances précédentes de l'adaptateur de ressource contenant la spécification d'activation ne peuvent pas être récupérés.

L'exemple suivant est un bean ActivationSpec, MyActSpec, situé à l'adresse de tas 51625162. Deux contraintes de validation sont violées. Le journal contient l'exception de violation de contrainte qui provoque l'échec de l'application, my_company_app :
[9/29/10 10:52:05:125 CDT] 00000009 BeanValidatio E  
 J2CA0238E: JavaBean com.my.company.adapter.MyActSpec@51625162 failed Bean Validation due to one or more invalid
  configuration settings indicated in the following list of constraint violations: 
	ConstraintViolationImpl{interpolatedMessage='Size should be between 2 and 4', propertyPath=asProperty1,
    rootBeanClass=class com.my.company.adapter.MyActSpec, messageTemplate='Size should be between 2 and 4'}
	ConstraintViolationImpl{interpolatedMessage='Should be < 30', propertyPath=asProperty2,
    rootBeanClass=class com.my.company.adapter.MyActSpec, messageTemplate='Should be < 30'}
[9/29/10 10:52:05:171 CDT] 00000009 RAWrapperImpl E  
 J2CA0089E: The method activateEndpoint on ResourceAdapter JavaBean
   cells/IBM-46DF84D297BNode01Cell/nodes/IBM-46DF84D297BNode01/resources.xml#J2CResourceAdapter_1285109389828
 failed with the following exception:
  javax.resource.ResourceException: com.ibm.ejs.j2c.metadata.ConstraintViolationException
	at com.ibm.ejs.j2c.ActivationSpecWrapperImpl.validateActivation…(	at com.ibm.ejs.j2c.ActivationSpecWrapperImpl.createAndInitializ…(
	at com.ibm.ejs.j2c.ActivationSpecWrapperImpl.activateEndpoint(
…
[9/29/10 10:52:05:750 CDT] 00000009 ApplicationMg A   WSVR0217I: Stopping application: my_company_app
. . .

Beans AdministeredObject

Un bean AdministeredObject est validé lorsque le serveur démarre un adaptateur de ressource J2C qui contient l'objet administré correspondant dans sa configuration. En cas d'échec à la validation, le serveur rejette l'instance de AdministeredObject et l'exception de violation de contrainte qui en résulte fait échouer l'adaptateur de ressource.

L'exemple suivant est un bean AdministeredObject, MyAdminObj, situé à l'adresse de tas 3a803a80. Deux contraintes de validation sont violées. Le journal contient l'exception de violation de contrainte qui provoque l'échec de l'adaptateur de ressource :
[9/29/10 10:51:25:125 CDT] 00000000 BeanValidatio E  
 J2CA0238E: JavaBean com.my.company.adapter.MyAdminObj@3a803a80 failed Bean Validation due to one or more invalid
  configuration settings indicated in the following list of constraint violations: 
	ConstraintViolationImpl{interpolatedMessage='The value should be greater than 10', propertyPath=aoProperty4,
  rootBeanClass=class com.my.company.adapter.MyAdminObj, messageTemplate='The value should be greater than 10'}
…
[9/29/10 10:51:25:218 CDT] 00000000 AdminObjectSe A  
 J2CA0017I: An exception occurred while building the serializable for JNDI deployment of jms/MyAdminObj :
 com.ibm.ejs.j2c.metadata.ConstraintViolationException
	at com.ibm.ejs.j2c.metadata.BeanValidationHelper.validate(
	at com.ibm.ejs.j2c.metadata.BeanValidationHelper.validate(
	at com.ibm.ejs.j2c.AdminObjectSerBuilderImpl._createAndValidate…(
	at com.ibm.ejs.j2c.AdminObjectSerBuilderImpl.createAndValidate…(
	at com.ibm.ejs.j2c.RALifeCycleManagerImpl.startRA(
. . . 

Icône indiquant le type de rubrique Rubrique de référence



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=rdat_rarbeanval
Nom du fichier : rdat_rarbeanval.html