RAR 모듈에서 Bean 유효성 검증

WebSphere® Application Server는 JCA(Java™ Connector Architecture) 버전 1.6 스펙을 준수하여 RAR(resource adapter archive) JavaBeans 제한조건을 유효성 검증합니다.

자원 어댑터는 자원 어댑터의 소스 코드에서 어노테이션, 자원 어댑터의 유효성 검증 디스크립터에서 제한조건 스펙 또는 둘의 혼합을 통해 애플리케이션 서버에 대한 구성 특성의 유효성 검증 요구사항을 지정할 수 있습니다. 이 제한조건을 지정하는 경우 자원 어댑터는 애플리케이션 서버에서 제공되는 기본 제공 Bean 유효성 검증 제한조건, 애플리케이션 개발자 또는 서드파티 또는 둘의 혼합으로 제공되는 사용자 정의 유효성 검증 제한조건을 사용할 수 있습니다. 자원 어댑터 개발자는 제한조건을 필드 및 다음 JCA 유형의 JavaBeans 준수 특성에 적용할 수 있습니다.
  • ResourceAdapter
  • ManagedConnectionFactory
  • ActivationSpec
  • AdministeredObject
런타임에서 애플리케이션 서버는 자원 어댑터에서 선언되는 Bean 유형의 인스턴스를 작성합니다. 각 인스턴스는 해당 구성 특성을 설정하는 즉시 인스턴스를 서비스에 배치하기 전에 유효성 검증됩니다.

RAR Bean을 유효성 검증하는 경우 애플리케이션 서버는 애플리케이션 서버에서 검색되는 Bean 유효성 검증 배치 디스크립터에 따라 유효성 검증기 팩토리의 인스턴스를 작성합니다. 그러면 유효성 검증기 인스턴스는 팩토리에서 확보되고 Bean 인스턴스 유효성 검증에 사용됩니다.

유효성 검증이 실패하면 애플리케이션 서버는 제한조건 위반 예외를 처리하고 모든 위반을 시스템 로그에 보고합니다. 각 RAR Bean 유형에 대한 예외 및 문제점 판별 정보의 효과는 RAR 모듈의 문제점 해결 Bean 유효성 검증 주제에서 문서화됩니다.
문제점 방지 문제점 방지: Bean 유효성 검증 스펙에는 둘 이상의 validation.xml이 클래스 경로에 표시되면 안됩니다. 이 요구사항은 둘 이상의 독립형 RAR이 유효성 검증 디스크립터를 제공할 때마다 위반됩니다. 자세한 정보는 이 주제에서 "RAR Bean 유효성 검증 디스크립터" 절을 참조하십시오. 둘 이상의 validation.xml이 애플리케이션 서버 클래스 로더에 표시되면 애플리케이션 서버 또는 애플리케이션 모듈은 기본 ValidatorFactory 획득에 실패하고 그 후에 Bean 유효성 검증을 수행할 수 없습니다. 예를 들어, 서버는 임베디드 RAR에서 유효성 검증 구성이 없고 둘 이상의 독립형 RAR이 구성을 제공할 때마다 애플리케이션에 임베드된 RAR의 Bean을 유효성 검증할 수 없습니다. 문제를 예방하려면 가능할 때마다 Bean 유효성 검증 디스크립터를 제공하는 독립형 RAR을 격리하여 설치하십시오. gotcha

기본 제공 제한조건 어노테이션

우수 사례 우수 사례: 기본 제공 제한조건 어노테이션을 사용하여 구성 특성에 대한 범위 및 필수 속성을 지정하십시오. 동일한 용도로 사용자 정의 어노테이션을 제공하지 마십시오. 다음 제한조건은 유용하지만 모든 Bean 유효성 검증 기본 제공 제한조건을 사용할 수도 있습니다. 제한조건에 대한 전체 목록은 Bean 유효성 검증 기본 제공 제한조건 주제를 참조하십시오. bprac
  • @Min

    이 어노테이션이 추가된 구성 특성의 최소 값을 지정합니다. 값은 지정한 최소값보다 크거나 같아야 합니다.

  • @Max

    이 어노테이션이 추가된 구성 특성의 최대 값을 지정합니다. 값은 지정한 최대값보다 작거나 같아야 합니다.

  • @Size

    이 어노테이션이 추가된 구성 특성의 범위 값을 지정합니다. 값은 지정한 최소값보다 크거나 같고 지정한 최대값보다 작거나 같아야 합니다.

  • @NotNull

    이 어노테이션이 추가된 구성 특성의 값은 널이면 안됩니다. 즉, 특성은 필수입니다.

다음 예는 기본 제공 제한조건 어노테이션이 추가된 RAR Bean 클래스입니다.

serverName 구성 특성 값은 널이면 안되며 instanceCount 특성 값은 애플리케이션 서버가 MyConnector 클래스 인스턴스를 작성하고 구성하는 경우 최소 1 이상이어야 합니다. 그렇지 않으면 제한조건 유효성 검증 예외가 발생하고 ResourceAdapter Bean의 경우 자원 어댑터 시작이 실패합니다. 자세한 정보는 RAR 모듈에서 문제점 해결 Bean 유효성 검증 주제를 참조하십시오.

package com.my.company;

@Connector(…)
public class MyConnector implements ResourceAdapter, Serializable 
{
	@ConfigProperty(type=java.lang.String.class,defaultValue="WAS")
	private String serverName;

	@NotNull() 
	public String getServerName() {return serverName;}

	private Integer instanceCount = 0;

	@Min(value=1)
	public Integer getInstanceCount() {return instanceCount;}
	…

RAR Bean 유효성 검증 디스크립터

Bean 유효성 검증 제한조건은 RAR 모듈에서 제공되는 XML 디스크립터를 통해 선언 가능합니다. 가장 간단한 방법으로 RAR 유효성 검증 디스크립터는 validation.xml 파일 및 RAR Bean 유효성 검증 제한조건을 선언하는 0개 이상의 XML 파일에 선언된 유효성 검증 구성으로 구성됩니다. 제한조건 선언을 포함하는 파일은 유효성 검증 구성의 constraint-mapping 요소에 지정됩니다(validation.xml).

RAR 모듈의 META-INF 디렉토리에서 유효성 검증 디스크립터를 패키지해야 합니다. 유효성 검증 디스크립터에서 선언되는 모든 사용자 정의 제한조건 어노테이션 클래스도 RAR 모듈에서 패키지되어야 합니다.

다음 예는 "기본 제공 제한조건 어노테이션" 절에 표시된 코드와 같은 제한조건 메타데이터를 선언하는 단순 RAR 유효성 검증 디스크립터입니다.

<?xml version="1.0" encoding="UTF-8"?>
<validation-config
		xmlns=http://jboss.org/xml/ns/javax/validation/configuration
 		xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
 		xsi:schemaLocation=http://jboss.org/xml/ns/javax/validation/configuration validation-configuration-1.0.xsd>
<constraint-mapping>META-INF/constraints.xml</constraint-mapping>
</validation-config>
제한조건 XML 파일도 META-INF 디렉토리에 있으며 다음과 유사합니다.
<constraint-mappings
	xmlns=http://jboss.org/xml/ns/javax/validation/mapping
	xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
	xsi:schemaLocation=http://jboss.org/xml/ns/javax/validation/mapping validation-mapping-1.0.xsd>
<default-package>com.my.company</default-package>
<bean class="MyConnector" ignore-annotations="true">
	<field name="serverName">
		<valid/>
		<!-- @NotNull() -->
		<constraint annotation="javax.validation.constraints.NotNull">
			<message>Value is not null</message>
		</constraint>
	</field>
	<field name="instanceCount">
		<valid/>
		<!-- @Min(1) -->
		<constraint annotation="javax.validation.constraints.Min">
				<message>Minimum possible value is 1</message>
				<element name="value">1</element>
			</constraint>
		</field>
	</bean>
<constraint-mapping>
패키지된 RAR 모듈 MyResourceAdapter.rar은 다음과 유사합니다.
my/
  company/
    MyConnector.class
. . .
META-INF
  /validation.xml
  /constraints.xml

써드파티 Bean 유효성 검증

WebSphere Application Server는 다른 Bean 유효성 검증 구현을 지원합니다. 자원 어댑터에 제품에서 제공되는 구현과 다른 Bean 유효성 검증 구현이 필요하고 RAR은 Bean 유효성 검증 구현을 제공하는 경우 RAR 모듈 루트 디렉토리에 Bean 유효성 검증 구현을 포함하는 JAR 파일을 패키지해야 합니다.

RAR 모듈은 단일 유효성 검증 구성 디스크립터(validation.xml)를 포함해야 하며 이는 RAR 모듈의 META-INF 디렉토리 또는 Bean 유효성 검증 JAR 파일의 META-INF/services 디렉토리에서 패키지할 수 있지만 둘 다에서는 할 수 없습니다.

RAR Bean 유효성 검증 구성 발견

RAR 유효성 검증 시에 애플리케이션 서버는 RAR META-INF 디렉토리에 제공되는 Bean 유효성 검증 디스크립터에 따라 RAR에 특정되는 Bean 유효성 검증 구성을 부트스트랩합니다. 디스크립터가 없는 경우 서버는 RAR 클래스 로딩 컨텍스트(예를 들어, RAR로 패키지되는 써드파티에 제공된 컨텍스트)에서 발견된 첫 번째 유효성 검증 디스크립터를 사용하여 구성을 부트스트랩합니다. 마지막으로 서버는 제품에서 제공되는 기본 유효성 검증 구성을 사용합니다.

그러면 서버가 발견된 Bean 유효성 검증 구성에 특정되는 유효성 검증기 팩토리를 작성하고 이 팩토리를 사용하여 RAR Bean 인스턴스를 유효성 검증하기 위해 Validator 인스턴스를 사용합니다. Bean 유효성 검증 디스크립터를 제공하는 RAR을 배치할 때 RAR을 로드하는 클래스 로더가 Bean 유효성 검증 디스크립터 및 RAR로 패키지된 클래스를 로드하도록 추가 단계를 수행해야 합니다.

임베디드 RAR에 대해 RAR을 임베드하는 애플리케이션을 배치한 후 애플리케이션 클래스 로더의 위임 모드를 Parent-Last(Child-First)로 설정해야 합니다. 자세한 정보는 애플리케이션 클래스 로더 구성을 참조하십시오.

독립형 RAR의 경우, RAR을 격리된 자원 제공자로 설치해야 합니다. 자세한 정보는 자원 어댑터 설정 주제를 참조하십시오.


주제 유형을 표시하는 아이콘 개념 주제



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