RAR 모듈에서 Bean 유효성 검증 문제점 해결

유효성 검증에 실패하는 RAR Bean은 서비스에 배치되지 않습니다. 제한조건 위반이 발생할 때, 애플리케이션은 Bean 유형 및 RAR 배치 방법에 따라 다른 자원 연결 문제가 발생합니다. 이 주제는 이런 알려진 문제를 이해하고 서비스하며 예방하는 방법을 설명합니다.

RAR Bean 제한조건 위반

WebSphere® Application Server는 하나 이상의 제한조건을 위반하는 RAR Bean 인스턴스를 유효성 검증할 때 제한조건 위반 예외를 표시하고 모든 제한조건 위반을 시스템 로그에 보고합니다. 영향을 받는 자원에 대한 전체 연결성을 복원하기 위해서는 모든 제한조건 위반의 원인이 판별되고 해결되어야 합니다.

문제점 판별은 위반에서 표시되는 구성 특성의 유효한 값에 대해 RAR 제공자 문서를 참고하는 것으로 시작합니다. 특성 값이 올바르지 않은 경우 해당 문서에 따라서 값을 재구성하고 자원 어댑터를 다시 시작해야 합니다. 어댑터가 애플리케이션에 임베드되는 경우 애플리케이션을 다시 시작하여 어댑터를 다시 시작하십시오. 어댑터가 독립형이면 애플리케이션 서버를 다시 시작하십시오.

유효한 구성 특성 값이 위반에 표시되는 경우, 제한조건이 Bean에 대해 올바르지 않게 지정되거나 Bean이 특성 값을 올바르지 않게 계산 중입니다. 이런 경우에는 RAR 공급업체가 문제점을 정정해야 합니다.

문제점의 원인이 결함이 있는 제한조건 정의(구현)인 경우 Bean 유효성 검증 제공자가 문제점을 정정해야 합니다. 이런 경우에 RAR이 IBM®에서 제공되거나 RAR이 Application Server에 의해 제공되는 Bean 유효성 검증 구현을 사용하는 경우, IBM 지원 센터에 문의하여 문제점 판별을 계속하십시오.

ResourceAdapter Bean

ResourceAdapter Bean은 서버가 J2C(Java™ 2 Connector) 자원 어댑터를 시작할 때 유효성 검증됩니다. 유효성 검증에 실패할 때 서버는 ResourceAdapter 인스턴스를 거부하며 그 결과인 제한조건 위반 예외로 인해 J2C 자원 어댑터가 실패하게 됩니다. 애플리케이션이 자원에 대한 아웃바운드 연결을 구축할 수 없고, 자원이 애플리케이션으로 메시지를 전달할 수 없습니다. 임베디드 어댑터의 경우 해당 어댑터를 임베드하는 애플리케이션이 시작하지 못합니다. 해당 자원을 포함하는 인다우트(in-doubt) 트랜잭션은 복구할 수 없습니다.

다음 예는 힙 주소 7efa7efa에 있는 ResourceAdapter Bean인 MyConnector입니다. 두 가지 유효성 검증 제한조건이 위반됩니다. 제한조건 위반 예외로 인해 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(
. . .

ManagedConnectionFactory Bean

ManagedConnectionFactory JavaBeans은 J2C 연결 팩토리의 초기 JNDI(Java Naming and Directory Interface) 검색 중에 유효성 검증됩니다.

유효성 검증이 실패할 때, Application Server는 ManagedConnectionFactory 인스턴스를 거부하고 검색을 수행하는 애플리케이션에 이름 지정 예외를 표시합니다. 이 예외는 원인이 되는 제한조건 위반 예외(javax.validation.ConstraintValidationException)를 표시합니다.

애플리케이션은 자원에 대한 아웃바운드 연결을 설정할 수 없습니다. 연결 팩토리에 의해 작성된 자원에 대한 연결을 통해 시작된 인다우트(in-doubt) 트랜잭션은 복구할 수 없습니다.

다음 예는 힙 주소 7dd07dd0에 있는 ManagedConnectionFactory Bean인 MyMcf입니다. 두 가지 유효성 검증 제한조건이 위반됩니다. 이 제한조건 위반 예외로 인해 애플리케이션이 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(
. . .     

ActivationSpec Bean 위반

ActivationSpec Bean은 애플리케이션이 시작할 때 유효성 검증됩니다. 이것은 Application Server가 J2C 활성화 스펙에 바운드된 메시지 엔드포인트를 초기에 활성화할 때입니다. 이들 활성화 스펙은 해당 구성에서 Bean 클래스의 이름을 지정합니다. 유효성 검증이 실패할 때, 엔드포인트는 활성화하지 못하며 결과 제한조건 위반 예외가 엔드포인트를 호스트하는 애플리케이션이 실패하게 만듭니다.

활성화 스펙을 포함하는 J2C 자원 어댑터가 시작되기 때문에, 애플리케이션은 여전히 자원에 대한 연결을 구축할 수 있습니다. 이 자원이 성공적으로 활성화한 엔드포인트로 메시지를 전달할 수 있습니다. 활성화 스펙이 임베디드 자원 어댑터 안에서 정의되는 경우, 서버는 애플리케이션 중지 과정에서 해당 어댑터를 중지합니다. 해당 활성화 스펙을 포함하는 자원 어댑터의 이전 인스턴스에 의해 전달되는 실패한 트랜잭션 메시지는 복구할 수 없습니다.

다음 예는 힙 주소 51625162에 있는 ActivationSpec Bean인 MyActSpec입니다. 두 가지 유효성 검증 제한조건이 위반됩니다. 로그는 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
. . .

AdministeredObject Bean

AdministeredObject Bean은 서버가 해당 구성에서 관리되는 오브젝트를 포함하는 J2C 자원 어댑터를 시작할 때 유효성 검증됩니다. 유효성 검증에 실패할 때 서버는 AdministeredObject 인스턴스를 거부하며 그 결과인 제한조건 위반 예외로 인해 J2C 자원 어댑터가 실패하게 됩니다.

다음 예는 힙 주소 3a803a80에 있는 AdministeredObject Bean인 MyAdminObj입니다. 두 가지 유효성 검증 제한조건이 위반됩니다. 로그는 자원 어댑터가 실패하게 만드는 제한조건 위반 예외를 보여줍니다.
[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(
. . . 

주제 유형을 표시하는 아이콘 참조 주제



시간소인 아이콘 마지막 업데이트 날짜: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rdat_rarbeanval
파일 이름:rdat_rarbeanval.html