RAR 模組中的 Bean 驗證

WebSphere® Application Server 會驗證資源配接器保存檔 (RAR) JavaBeans 限制符合 Java™ 連接器架構 (JCA) 1.6 版規格。

資源配接器可以透過資源配接器原始碼中的註釋、資源配接器驗證描述子中的限制規格,或兩者混用,以指定 Application Server 的配置內容驗證需求。 指定這些限制時,資源配接器可以使用 Application Server 隨附的內建 Bean 驗證限制、應用程式開發者或第三方提供的自訂 Bean 驗證限制,或兩者混用。 資源配接器開發者可以對下列 JCA 類型的欄位及符合 JavaBeans 的內容套用限制:
  • ResourceAdapter
  • ManagedConnectionFactory
  • ActivationSpec
  • AdministeredObject
在執行時期,應用程式伺服器會建立資源配接器宣告的 Bean 類型的實例。在每個實例開始運作之前,設定配置內容後會立即驗證實例。

驗證 RAR Bean 時,Application Server 會根據 Application Server 探索到的 Bean 驗證部署描述子,建立驗證器 Factory 的實例。 然後,從 Factory 取得驗證器實例,並用來驗證 Bean 實例。

如果驗證失敗,Application Server 會擲出限制違規異常狀況,並在系統日誌中報告所有違規。「對 RAR 模組中的 Bean 驗證進行疑難排解」主題中,說明異常狀況對每個 RAR Bean 類型造成的影響及問題判斷資訊。
避免困難 避免困難: 「Bean 驗證」規格要求類別路徑中不能出現多個 validation.xml。只要有兩個以上的獨立式 RAR 提供驗證描述子,就會違反此需求。如需相關資訊,請參閱本主題中的「RAR Bean 驗證描述子」一節。 當 Application Server 類別載入器可看見多個 validation.xml 時,Application Server 或應用程式模組可能無法獲得預設的 ValidatorFactory,從而無法執行 Bean 驗證。 例如,每當內嵌的 RAR 缺少驗證配置,而且有兩個以上的獨立式 RAR 提供配置時,伺服器就無法驗證內嵌在應用程式中的 RAR 的 Bean。為了避免引起麻煩,請盡可能單獨安裝可提供 Bean 驗證描述子的獨立式 RAR。gotcha

內建限制註釋

最佳作法 最佳作法: 請使用內建限制註釋來指定配置內容的範圍和必要屬性,而非提供相同用途的自訂註釋。下列限制很有用,但是您可以使用所有的 Bean 驗證內建限制。如需完整的限制清單,請參閱 Bean 驗證內建限制主題。bprac
  • @Min

    指定以這個註釋來裝飾的配置內容的最小值。值必須大於或等於指定的下限。

  • @Max

    指定以這個註釋來裝飾的配置內容的最大值。值必須小於或等於指定的上限。

  • @Size

    指定以這個註釋來裝飾的配置內容的值範圍。值必須大於或等於指定的下限,並且小於或等於指定的上限。

  • @NotNull

    指定以這個註釋來裝飾的配置內容的值不得為空值。亦即,這是必要內容。

下列範例是一個使用內建限制註釋來裝飾的 RAR Bean 類別。

當 Application Server 建立和配置 MyConnector 類別的實例時,serverName 配置內容的值不得為空值,而且 instanceCount 內容的值必須至少為 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 驗證描述子

您可以透過 RAR 模組所提供的 XML 描述子來宣告 Bean 驗證限制。在最簡單的情況下,RAR 驗證描述子由 validation.xml 檔中宣告的驗證配置,以及宣告 RAR Bean 驗證限制的零個或多個 XML 檔所組成。含有限制宣告的檔案是在驗證配置 (validation.xml) 的 constraint-mapping 元素中指定。

您必須將驗證描述子套裝在 RAR 模組的 META-INF 目錄中。在驗證描述子中宣告的任何自訂限制註釋類別,也必須套裝在 RAR 模組中。

下列範例是一個簡單的 RAR 驗證描述子,其中宣告限制 meta 資料,如同「內建限制註釋」一節所顯示的程式碼。

<?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 驗證實作,則您必須將包含 Bean 驗證實作的 JAR 檔套裝在 RAR 模組根目錄中。

RAR 模組還必須包含單一驗證配置描述子 (validation.xml),其可套裝在 RAR 模組的 META-INF 目錄中,或在 Bean 驗證 JAR 檔的 META-INF/services 目錄中,但不能同時套裝在這兩個目錄中。

RAR Bean 驗證配置探索

驗證 RAR Bean 時,Application Server 會根據 RAR META-INF 目錄中所提供的 Bean 驗證描述子,引導 RAR 專用的 Bean 驗證配置。 如果描述子不存在,伺服器會使用 RAR 類別載入環境定義中探索到的第一個驗證描述子來引導配置,例如,套裝在 RAR 中的第三方 Bean 驗證中所提供的驗證描述子。 最後,伺服器會使用本產品所提供的預設驗證配置。

然後,伺服器會建立已探索到的 Bean 驗證配置專用的驗證器 Factory,並使用此 Factory 建立驗證器實例以驗證 RAR Bean 實例。 當您部署的 RAR 有提供 Bean 驗證描述子時,您必須採取額外步驟,以確保負責載入 RAR 的類別載入器,也會載入套裝在 RAR 中的 Bean 驗證描述子及類別。

對於內嵌的 RAR,在您已部署內嵌 RAR 的應用程式之後,您必須將應用程式類別載入器的委派模式設定為「母項最後(子項最先)」。 如需相關資訊,請參閱「配置應用程式類別載入器」主題。

對於獨立式 RAR,您必須將該 RAR 安裝為單獨的資源提供者。如需相關資訊,請參閱「資源配接器設定」主題。


指出主題類型的圖示 概念主題



時間戳記圖示 前次更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cdat_rarbeabval
檔名:cdat_rarbeabval.html