Resolvendo Problemas de Validação de Bean nos Módulos RAR

Os beans que tiverem falha na validação não são colocados em serviço. Quando ocorrerem violações de restrição, os aplicativos terão problemas de conectividade de recursos que são diferentes de acordo com o tipo de bean e como o RAR é implementado. Esse tópico explica como entender, resolver e evitar esses problemas conhecidos.

Violações de Restrição de Bean do RAR

O WebSphere Application Server exibe uma exceção de violação de restrição e relata todas as violações de restrição no log do sistema quando ele valida as instâncias de bean RAR que violam uma ou mais restrições. A causa de toda a violação de restrição deve ser determinada e resolvida para restaurar conectividade completa com o recurso afetado.

A determinação do problema inicia-se com a consulta da documentação do provedor RAR para obter os valores válidos das propriedades de configuração que são indicados nas violações. Se os valores da propriedade forem inválidos, deverá reconfigurá-los de acordo com a documentação e reiniciar o adaptador de recursos. Se o adaptador estiver integrado em um aplicativo, então reinicie o aplicativo para reiniciar o adaptador; se o adaptador for independente, reinicie o servidor de aplicativos.

Se um valor de propriedade de configuração válido estiver indicado em uma violação, a restrição poderá estar especificada incorretamente para o bean ou o bean está calculando incorretamente o valor da propriedade. Nesses casos, o fornecedor do RAR deverá corrigir o problema.

Se o problema for causado por uma definição de restrição com falha (implementação), o provedor de validação de bean deverá corrigir o problema. Nesses casos, se o RAR for fornecido pelo IBM®, ou o RAR usar a implementação de validação de bean fornecida pelo Application Server, entre em contato com o suporte IBM para continuar com a determinação do problema.

Beans ResourceAdapter

Os beans ResourceAdapter são validados quando o servidor inicia um adaptador de recursos Java™ 2 Connector (J2C). Quando uma validação falha, o servidor rejeita a instância ResourceAdapter e a exceção de violação de restrição resultante causa uma falha no adaptador de recursos J2C. Os aplicativos não podem estabelecer conexões de saída com o recurso e o recurso não pode entregar mensagens para os aplicativos. Para um adaptador integrado, o aplicativo que integra o adaptador falha ao iniciar. Transações indeterminadas que envolvem o recurso não podem ser recuperadas.

A seguir há um exemplo do bean ResourceAdapter, MyConnector, no endereço de heap 7efa7efa. Duas restrições de validação são violadas. A exceção de violação de restrição causa falha no 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

ManagedConnectionFactory JavaBeans são validados durante a consulta inicial do Java Naming and Directory Interface (JNDI) de uma connection factory J2C.

Quando uma validação falha, o Application Server rejeita a instância ManagedConnectionFactory e exibe uma exceção de nomenclatura para o aplicativo que executa a consulta. Essa exceção indica a exceção de violação de restrição casual (javax.validation.ConstraintValidationException).

Os aplicativos não podem estabelecer conexões de saída com o recurso. Transações indeterminadas iniciada pelas conexões com o recurso que foram criadas pelo connection factory não podem ser recuperadas.

A seguir há um exemplo do bean ManagedConnectionFactory, MyMcf, no endereço de heap 7dd07dd0. Duas restrições de validação são violadas. A exceção de violação de restrição faz com que o aplicativo não obtenha um connection factory que é necessário para criar uma conexão com o recurso, 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(
. . .     

Violações do Bean ActivationSpec

Os beans ActivationSpec são validados quando o aplicativo é iniciado. Isso ocorre quando o Application Server ativa inicialmente o limite dos terminais de mensagem para as especificações de ativação J2C. Essas especificações de ativação nomeiam a classe de bean na sua configuração. Quando a validação falha, o terminal falha ao ser ativado e a exceção de violação de restrição resultante faz com que o aplicativo que hospeda o terminal falhe.

Como o adaptador de recursos J2C que contém a especificação de ativação é iniciado, os aplicativos ainda podem estabelecer conexões com o recurso. O recurso pode entregar mensagens para os terminais que foram ativados com sucesso. Se a especificação de ativação for definida em um adaptador de recursos integrado, o servidor para o adaptador durante a parada do aplicativo. As mensagens transacionais com falha entregues pelas instâncias anteriores do adaptador de recursos que contém a especificação de ativação não podem ser recuperadas.

A seguir há um exemplo do bean ActivationSpec, MyActSpec, no endereço de heap 51625162. Duas restrições de validação são violadas. O log mostra a exceção de violação de restrição que causa falha do aplicativo 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

Os beans AdministeredObject são validados quando o servidor inicia um adaptador de recursos J2C que contém o objeto administrado na sua configuração. Quando uma validação falha, o servidor rejeita a instância AdministeredObject e a exceção de violação de restrição resultante causa uma falha no adaptador de recursos.

A seguir há um exemplo do bean AdministeredObject, MyAdmininObj, no endereço de heap 3a803a80. Duas restrições de validação são violadas. O log mostra a exceção de violação de restrição que causa falha do adaptador de recursos:
[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: Ocorreu uma exceção ao construir o serializável para a implementação JNDI de 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(
. . . 

Ícone que indica o tipo de tópico Tópico de Referência



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rdat_rarbeanval
Nome do arquivo: rdat_rarbeanval.html