Sun Java System Message Queue 4.2 版本說明

XML 有效負載訊息的模式驗證

Message Queue 4.2 的此新功能可在將訊息傳送至代理程式時,根據 XML 模式驗證 XML 訊息文字 (而非物件) 的內容。XML 模式 (XSD) 的位置會指定為 Message Queue 目標的特性。若未指定任何 XSD 位置,則會使用 XML 文件中的 DTD 宣告,執行 DTD 驗證 (XSD 驗證包含資料類型與值範圍驗證,比 DTD 驗證嚴格)。

使用此新功能的用戶端應用程式應將 Java SE 版本升級為 JRE 1.5 或更新版本。

若要啟用 XML 模式驗證,請設定下列實體目標特性:

表 1–5 XML 模式驗證的實體目標特性

特性 

類型 

預設值 

說明 

validateXMLSchemaEnabled

Boolean 

false

是否啟用 XML 模式驗證? 

如果設定為 false 或未設定,則目標未啟用 XML 模試驗證。

XMLSchemaURIList

String 

空值 

以空格分隔的 XML 結構描述文件 (XSD) URI 字串清單 

這些 URI 指向 XML 模式驗證 (如果有) 所使用的一或多個 XSD 位置。 

如果指定多個 URI,請使用雙引號括住此值。 

範例: 

"http://foo/flap.xsd http://test.com/test.xsd"

如果此特性未設定或為空值,且已啟用 XML 驗證,則會使用 XML 文件中指定的 DTD 執行 XML 驗證。 

reloadXMLSchemaOnFailure

Boolean 

false

是否啟用 [失敗時重新載入 XML 模式]? 

如果設定為 False 或未設定,則驗證失敗時不會重新載入模式。 

啟用 XML 驗證時,Message Queue 用戶端執行階段會嘗試根據指定的 XSD (若未指定任何 XSD,則根據 DTD) 驗證 XML 訊息,再傳送至代理程式。若找不到指定的模式或無法驗證訊息,則不會傳送訊息且會丟出例外。

您可分別在使用 imqcmd create dst 指令 (建立目標時) 或 imqcmd update dst 指令 (更新時) 時設定 XML 驗證特性。您應在目標為非使用中時設定 XML 驗證特性:亦即沒有用戶及產生器,且目標中沒有訊息時。


備註 –

若在執行階段無法存取 XSD,可能必須在目標為使用中時修改 XMLSchemaURIList


若在目標為使用中時 (例如,若有產生器連線至目標) 設定了任何 XML 驗證特性,產生器必須重新連線至代理程式,變更才會生效。同理,若由於變更應用程式需求而變更了 XSD,則根據已變更之 XSD 來產生 XML 訊息的所有用戶端應用程式,均須重新連線至代理程式。

reloadXMLSchemaOnFailure 特性設定為 true 且 XML 驗證失敗,則 Message Queue 用戶端執行階段會嘗試重新載入 XSD,再重新嘗試驗證訊息。若驗證使用重新載入的 XSD 仍失敗,用戶端執行階段會丟出例外。