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.
[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.
[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.
[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.
[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(
. . .