RAR モジュールでの Bean Validation

WebSphere® Application Server は、リソース・アダプター・アーカイブ (RAR) JavaBeans 制約を Java™ Connector Architecture (JCA) バージョン 1.6 の仕様に準拠して妥当性検査します。

リソース・アダプターは、リソース・アダプターのソース・コード内のアノテーション、リソース・アダプター検証記述子内の制約指定、またはそれらの両方を使用して、構成プロパティーの検証要件を Application Server に指定できます。 これらの制約を指定する際、リソース・アダプターは、Application Server に用意された組み込みの Bean Validation 制約、アプリケーション開発者またはサード・パーティーのいずれかが用意したカスタム Bean Validation 制約、あるいはそれらの両方を使用できます。 リソース・アダプターの開発者は、以下の JCA タイプのフィールドおよび JavaBeans 準拠プロパティーに制約を適用できます。
  • ResourceAdapter
  • ManagedConnectionFactory
  • ActivationSpec
  • AdministeredObject
実行時、アプリケーション・サーバーは、リソース・アダプターによって宣言された Bean タイプのインスタンスを作成します。 各インスタンスの検証は、その構成プロパティーを設定した直後、サービスへと配置される前に実行されます。

RAR Bean の検証時、Application Server は、検出した Bean Validation デプロイメント記述子に従ってバリデーター・ファクトリーのインスタンスを作成します。 その後、そのファクトリーからバリデーター・インスタンスが取得され、Bean インスタンスの検証に使用されます。

検証に失敗した場合、Application Server は制約違反例外をスローして、すべての違反をシステム・ログに報告します。 各 RAR Bean タイプの例外の影響および問題判別に関する情報は、トピック『RAR モジュールにおける Bean Validation のトラブルシューティング』を参照してください。
トラブルの回避 (Avoid trouble) トラブルの回避 (Avoid trouble): Bean Validation 仕様では、クラス・パスに 1 つ以下の validation.xml しか表示されてはならないとされています。 2 つ以上のスタンドアロン RAR で検証記述子が指定された場合には、常に要件に反することになります。詳しくは、このトピックの「RAR Bean Validation 記述子」を参照してください。 Application Server のクラス・ローダーに対して複数の validation.xml が表示された場合、Application Server またはアプリケーション・モジュールはデフォルトの ValidatorFactory の取得に失敗する可能性があります。その場合、Bean Validation は実行できません。 例えば、アプリケーションに組み込まれた RAR に検証構成がなく、2 つ以上のスタンドアロン RAR が構成を提供している場合には、サーバーはこの RAR の Bean を検証できません。 この問題を回避するには、Bean Validation 記述子を提供するスタンドアロン RAR を、できるだけ別にインストールしてください。gotcha

組み込み制約アノテーション

ベスト・プラクティス ベスト・プラクティス: 構成プロパティーの範囲属性および必須属性を指定するには、カスタム・アノテーションではなく、組み込み制約アノテーションを使用してください。 以下の制約が便利ですが、すべての Bean Validation 組み込み制約を使用できます。 すべての制約のリストについては、トピック Bean Validation 組み込み制約 を参照してください。bprac
  • @Min

    このアノテーションを使用した構成プロパティーの最小値を指定します。 値は、指定された最小値以上である必要があります。

  • @Max

    このアノテーションを使用した構成プロパティーの最大値を指定します。 値は、指定された最大値以下である必要があります。

  • @Size

    このアノテーションを使用した構成プロパティーの値の範囲を指定します。 値は、指定された最小値以上、かつ、指定された最大値以下である必要があります。

  • @NotNull

    このアノテーションを使用した構成プロパティーの値はヌルにできないことを指定します。 つまり、そのプロパティーは必須です。

以下に示すのは、組み込み制約アノテーションを使用した RAR Bean クラスの例です。

Application Server が MyConnector クラスのインスタンスを作成して構成する際、serverName 構成プロパティーの値はヌルにできません。また、instanceCount プロパティーの値は少なくとも 1 である必要があります。 これらに違反した場合は制約検証例外が発生し、ResourceAdapter Bean の場合であれば、リソース・アダプターの開始に失敗します。 詳しくは、『RAR モジュールにおける Bean Validation のトラブルシューティング』を参照してください。

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 Validation 記述子

Bean Validation 制約は、RAR モジュールに用意された XML 記述子を使用して宣言できます。 最も単純な場合、RAR 検証記述子は、validation.xml ファイル内で宣言される検証構成と、RAR Bean Validation 制約を宣言するゼロ個以上の XML ファイルから成ります。 制約の宣言が含まれているファイルは、検証構成 (validation.xml) の constraint-mapping エレメントで指定されます。

検証記述子は、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 Validation

WebSphere Application Server では、さまざまな Bean Validation 実装を使用できます。製品に用意された Bean Validation 実装とは異なる実装をリソース・アダプターが必要とし、RAR でその Bean Validation 実装を提供する場合には、その Bean Validation 実装を含む JAR ファイルをその RAR モジュールのルート・ディレクトリー内にパッケージする必要があります。

この RAR モジュールには、単一の検証構成記述子 (validation.xml) も含まれている必要があります。検証構成記述子は、RAR モジュールの META-INF ディレクトリー内、または Bean Validation JAR ファイルの META-INF/services ディレクトリー内 (ただし、そのどちらか一方) にパッケージ可能です。

RAR Bean Validation 構成のディスカバリー

RAR Bean の検証時、Application Server は、RAR の META-INF ディレクトリーにある Bean Validation 記述子に従って、RAR に固有の Bean Validation 構成のブートストラップを実行します。 記述子が存在しない場合、サーバーは、RAR 内にパッケージされたサード・パーティーの Bean Validation に用意されたものなど、RAR のクラス・ロード・コンテキストで検出された最初の検証記述子を使用して構成のブートストラップを実行します。 サーバーは最終的には、製品に用意されたデフォルトの検証構成を使用します。

その後サーバーは、検出された Bean Validation 構成に固有のバリデーター・ファクトリーを作成し、このファクトリーを使用して、RAR Bean インスタンスの検証を行うためのバリデーター・インスタンスを作成します。 Bean Validation 記述子を提供する RAR をデプロイする場合には、追加ステップを実行して、RAR をロードするクラス・ローダーが、RAR 内にパッケージされた Bean Validation 記述子およびクラスをロードするようにする必要があります。

組み込みの RAR の場合は、RAR を組み込むアプリケーションをデプロイした後に、アプリケーション・クラス・ローダーの委任モードを「親が最後」(「子が最初 (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