Resolución de problemas de validación de beans en módulos RAR
Los beans RAR que no pasan la validación no se ponen en servicio. Cuando se producen violaciones de restricciones, las aplicaciones sufren problemas de conectividad de recursos que son distintos según el tipo de bean y cómo se despliegue el archivo RAR. En este tema se explica cómo detectar, solucionar y evitar estos problemas conocidos.
Violaciones de restricciones de bean RAR
WebSphere Application Server muestra una excepción de violación de restricción e informa de todas las violaciones de restricciones en el registro del sistema cuando se validan las instancias del bean RAR que violan una o más restricciones. La causa de cualquier violación de restricción se debe determinar y resolver para restaurar la conectividad completa para el recurso afectado.
La determinación de problemas empieza consultando en la documentación del proveedor de RAR los valores válidos de las propiedades de configuración que se indican en la violaciones. Si los valores de las propiedades no son válidos, se deben volver a configurar de acuerdo con la documentación y se debe reiniciar el adaptador de recursos. Si el adaptador está incorporado en una aplicación, reinicie la aplicación para reiniciar el adaptador; si el adaptador es autónomo, reinicie el servidor de aplicaciones.
Si se indica un valor de propiedad de configuración válido en una violación, es posible que la restricción se haya especificado incorrectamente para el bean o que el bean esté calculando incorrectamente el valor de la propiedad. En estos casos, el proveedor de RAR debe corregir el problema.
Si el problema es debido a una definición de restricción (implementación) anómala, el proveedor de validación de beans debe corregir el problema. En estos casos, si del RAR lo proporciona IBM®, o si el RAR utiliza la implementación de validación del bean proporcionado por el servidor de aplicaciones, póngase en contacto con el personal de soporte de IBM para continuar con la determinación de problemas.
Beans ResourceAdapter
Los beans ResourceAdapter se validan cuando el servidor inicia un adaptador de recursos J2C (Java™ 2 Connector). Cuando la validación falla, el servidor rechaza la instancia de ResourceAdapter y la excepción de violación de restricción resultante hace que el adaptador de recursos J2C falle. Las aplicaciones no puede establecer conexiones de salida al recurso y el recurso no puede entregar mensajes a las aplicaciones. Para un adaptador incorporado, la aplicación que incluye el adaptador no se inicia. Las transacciones dudosas que implican el recurso no se pueden recuperar.
[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='El tamaño mínimo es 2', propertyPath=dataBaseName, rootBeanClass=class com.my.company.adapter.MyConnector, messageTemplate='El tamaño mínimo es 2'}
ConstraintViolationImpl{interpolatedMessage='debe ser mayor que o igual a 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: Se ha producido una excepción al intentar iniciar ResourceAdapter cells/IBM-46DF84D297BNode01Cell/nodes/IBM-46DF84D297BNode01/resources.xml#J2CResourceAdapter_1285109360562. La excepción es:
com.ibm.ejs.j2c.metadata.ConstraintViolationException
en com.ibm.ejs.j2c.metadata.BeanValidationHelper.validate(
en com.ibm.ejs.j2c.RAWrapperImpl.createAndConfigureRA(
en com.ibm.ejs.j2c.RAWrapperImpl.startRA(
en com.ibm.ejs.j2c.RALifeCycleManagerImpl.startRA(
en com.ibm.ejs.j2c.RALifeCycleManagerImpl.resourceProviderEvent(
. . .
Beans ManagedConnectionFactory
Los JavaBeans ManagedConnectionFactory se validan durante la búsqueda inicial de JNDI (Java Naming and Directory Interface) de una fábrica de conexiones J2C.
Cuando la validación falla, el servidor de aplicaciones rechaza la instancia de ManagedConnectionFactory y muestra una excepción de denominación a la aplicación que realiza la búsqueda. Esta excepción indica la excepción de violación de restricción causal (javax.validation.ConstraintValidationException).
Las aplicaciones no pueden establecer conexiones de salida al recurso. Las transacciones dudosas iniciadas a través de conexiones con el recurso creadas por la fábrica de conexiones no se pueden recuperar.
[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='debe ser menor o igual que 30', propertyPath=mcfProperty2, rootBeanClass=class com.my.company.adapter.MyMcf, messageTemplate='{javax.validation.constraints.Max.message}'}
ConstraintViolationImpl{interpolatedMessage='El valor debe ser mayor que 10', propertyPath=mcfProperty4, rootBeanClass=class com.my.company.adapter.MyMcf, messageTemplate='El valor debe ser mayor que 10'}
….
[9/30/10 7:58:58:765 CDT] 00000023 ConnectionFac E J2CA0009E: Se ha producido una excepción al crear una instancia de la clase ManagedConnectionFactory com.my.company.adapter.MyMcf utilizada por el recurso j2c/MyConnector : com.ibm.ejs.j2c.metadata.ConstraintViolationException
en com.ibm.ejs.j2c.metadata.BeanValidationHelper.validate(
en com.ibm.ejs.j2c.ServerFunction.validate(
en com.ibm.ejs.j2c.J2CUtilityClass.createMCFEntry(
…
en javax.naming.InitialContext.lookup(
en com.my.company.app.MyEjbImpl.testJbv(
. . .
Violaciones de beans ActivationSpec
Los beans ActivationSpec se validan cuando se inician las aplicaciones. Esto es cuando el servidor de aplicaciones activa inicialmente puntos finales de mensajes enlazados a especificaciones de activación J2C. Estas especificaciones de activación nombran la clase de bean en su configuración. Cuando la validación falla, el punto final no puede activarse y la excepción de violación de restricción resultante hace que la aplicación que alberga el punto final falle.
Como el adaptador de recursos J2C que contiene la especificación de activación está iniciado, las aplicaciones pueden seguir estableciendo conexiones con el recurso. El recurso puede entregar mensajes a los puntos finales que se hayan activado correctamente. Si la especificación de activación se define en un adaptador de recursos incorporado, el servidor detiene el adaptador durante la detención de la aplicación. Los mensajes transaccionales fallidos entregados por instancias anteriores del adaptador de recursos que contienen la especificación de activación no se pueden recuperar.
[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='El tamaño debe ser entre 2 y 4', propertyPath=asProperty1, rootBeanClass=class com.my.company.adapter.MyActSpec, messageTemplate='El tamaño debe ser entre 2 y 4'}
ConstraintViolationImpl{interpolatedMessage='Debe ser < 30', propertyPath=asProperty2, rootBeanClass=class com.my.company.adapter.MyActSpec, messageTemplate='Debe ser < 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
en com.ibm.ejs.j2c.ActivationSpecWrapperImpl.validateActivation…( en com.ibm.ejs.j2c.ActivationSpecWrapperImpl.createAndInitializ…(
en com.ibm.ejs.j2c.ActivationSpecWrapperImpl.activateEndpoint(
…
[9/29/10 10:52:05:750 CDT] 00000009 ApplicationMg A WSVR0217I: Se está deteniendo la aplicación: my_company_app
. . .
Beans AdministeredObject
Los beans AdministeredObject se validan cuando el servidor inicia un adaptador de recursos J2C que contiene el objeto administrado en su configuración. Cuando la validación falla, el servidor rechaza la instancia de AdministeredObject y la excepción de violación de restricción resultante hace que el adaptador de recursos falle.
[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='El valor debe ser mayor que 10', propertyPath=aoProperty4, rootBeanClass=class com.my.company.adapter.MyAdminObj, messageTemplate='El valor debe ser mayor que 10'}
…
[9/29/10 10:51:25:218 CDT] 00000000 AdminObjectSe A
J2CA0017I: Se ha producido una excepción al crear el despliegue serializable para JNDI de jms/MyAdminObj :
com.ibm.ejs.j2c.metadata.ConstraintViolationException
en com.ibm.ejs.j2c.metadata.BeanValidationHelper.validate(
en com.ibm.ejs.j2c.metadata.BeanValidationHelper.validate(
en com.ibm.ejs.j2c.AdminObjectSerBuilderImpl._createAndValidate…(
en com.ibm.ejs.j2c.AdminObjectSerBuilderImpl.createAndValidate…(
en com.ibm.ejs.j2c.RALifeCycleManagerImpl.startRA(
. . .