RAR 모듈에서 Bean 유효성 검증
WebSphere® Application Server는 JCA(Java™ Connector Architecture) 버전 1.6 스펙을 준수하여 RAR(resource adapter archive) JavaBeans 제한조건을 유효성 검증합니다.
- ResourceAdapter
- ManagedConnectionFactory
- ActivationSpec
- AdministeredObject
RAR Bean을 유효성 검증하는 경우 애플리케이션 서버는 애플리케이션 서버에서 검색되는 Bean 유효성 검증 배치 디스크립터에 따라 유효성 검증기 팩토리의 인스턴스를 작성합니다. 그러면 유효성 검증기 인스턴스는 팩토리에서 확보되고 Bean 인스턴스 유효성 검증에 사용됩니다.

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

- @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>
<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을 격리된 자원 제공자로 설치해야 합니다. 자세한 정보는 자원 어댑터 설정 주제를 참조하십시오.