RAR モジュールでの Bean Validation
WebSphere® Application Server は、リソース・アダプター・アーカイブ (RAR) JavaBeans 制約を Java™ Connector Architecture (JCA) バージョン 1.6 の仕様に準拠して妥当性検査します。
- ResourceAdapter
- ManagedConnectionFactory
- ActivationSpec
- AdministeredObject
RAR Bean の検証時、Application Server は、検出した Bean Validation デプロイメント記述子に従ってバリデーター・ファクトリーのインスタンスを作成します。 その後、そのファクトリーからバリデーター・インスタンスが取得され、Bean インスタンスの検証に使用されます。

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

- @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>
<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 を独立したリソース・プロバイダーとしてインストールする必要があります。 詳しくは、『リソース・アダプター設定』を参照してください。