環境定義和相依關係注入 1.2 的行為變更

「環境定義和相依關係注入 (CDI)」1.2 實作有了一些行為變更,可能使得從 CDI 1.0 移轉的應用程式,在 CDI 1.2 中採取不同的行為或者執行失敗。

您可以針對每一個伺服器實例,挑選 CDI 1.0 與 CDI 1.2 特性實作,並將行為變更納入考量。如果必要的行為只有 CDI 1.2 特性才有,您必須使用 CDI 1.2 特性。如果現有的應用程式會因 CDI 1.2 特性中的行為變更,受到不利影響,則使用 CDI 1.0 特性,可保留該應用程式的現有行為。在相同的伺服器中,不可能同時使用 CDI 1.0 和 CDI 1.2 特性,因為這些特性不相容。如果您同時配置這兩個特性,伺服器會產生配置錯誤。

CDI 1.0 特性是以 CDI 的 Apache OpenWebBeans 實作為建置基礎。CDI 1.2 特性是以 CDI 的 Weld 實作為建置基礎。基於這兩種實作的差異,其行為已有所變更。

交談 ID CID

在 CDI 1.0 實作中,CID 是廣域唯一的。在 CDI 1.2 中,其在每個 HTTP 階段作業中都是唯一的。此行為與 CDI 規格一致,也是 Weld 選擇的使用慣例。如果要取得廣域唯一的 CID,必須呼叫 Conversation.begin,在交談開始時指定。

參照 beans.xml 檔中的綱目

在 CDI 1.2 實作中,以下是 beans.xml 檔所參照的綱目範例:
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
如果您使用無效的綱目,伺服器會產生異常狀況錯誤。您可以設定 org.jboss.weld.xml.disableValidating=true JVM 內容,一則可關閉 beans.xml 檔的驗證,再者可避免產生錯誤。如果 beans.xml 檔指定了裝飾元或攔截程式,必須使用有效的綱目,否則裝飾元和攔截程式將不會正確實例化。

隱含的 Bean 保存檔

CDI 1.2 實作定義了兩種不同類型的 Bean 保存檔:明確和隱含。

明確 Bean 保存檔是一個含有 beans.xml 檔的保存檔:
  • 版本號碼是 1.1(或更新版本),且 bean-discovery-mode 是 all
  • 沒有版本號碼
  • 是一個空檔案

隱含的 Bean 保存檔是其他任何的保存檔,含有一或多個 Bean 類別,內含一個依照「第 2.5.1 節 - Bean 定義註釋」中的規格所定義的 Bean 定義註釋,或一或多個 Session Bean。請參閱 Java™ EE 平台的環境定義和相依關係注入規格。

將綱目更新為 CDI 1.2 實作時,如果要讓 Bean 保存檔維持明確,必須將 Bean 探索模式設為 all
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
bean-discovery-mode="all"
		version="1.1">
註: 隱含 Bean 保存檔只會探索具有 Bean 定義註釋的 Bean。
這種新類型的 Bean 保存檔可能導致出現下列這樣的保存檔:無意成為 CDI Bean 保存檔,但在 CDI 1.2 實作中,卻成為隱含 Bean 保存檔。如果要停止這種行為,可以新增 beans.xml 檔,並將 Bean 探索模式設為 none,以防保存檔成為 Bean 保存檔。替代方案是在 Liberty 伺服器的 server.xml 檔中,新增下列內容:
<cdi12 enableImplicitBeanArchives="false"/>
將這個內容設為 false,可阻止沒有 beans.xml 檔的保存檔成為隱含 Bean 保存檔。

將這個內容設為 false,可在啟動期間改良效能。


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



「時間戳記」圖示 前次更新: 2016 年 11 月 30 日
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cwlp_cdi_behavior
檔名:cwlp_cdi_behavior.html