EJB 工具 - 版本注意事項

1.0 簡介
2.0 支援的軟體和規格
3.0 已知的問題
   3.1 重新整理問題
   3.2 上下同時進行的對映之提示與限制
   3.3 對映編輯器中的拖放支援
   3.4 在 J2EE 視景的「導覽器」視圖中刪除表格和綱目
   3.5 1.1 CMP Entity Bean 的樂觀預測
   3.6 繼承的提示與限制
   3.7 在開發期間參照執行時期 JAR 檔
   3.8 請勿在多份表格間對映編製類型
   3.9 刪除 CMP 實體不會移除對映項
   3.10 EJB QL 限制
   3.11 EJB 參照的驗證不是自動的
   3.12 Java Bean 和檔案不支援阿拉伯文的名稱
   3.13 查詢產生限制
   3.14 編輯 local-ejb-ref 鏈結時發生問題
   3.15 在部署 EJB 2.0 關係之後,作業清單中發生錯誤
   3.16 遺漏非空值外部索引鍵直欄的專用 ejbCreate
   3.17 使用繼承的「程式碼」頁面 CMP 欄位變更的限制
   3.18 當變更 Bean 類別時,不會刪除 EJB 部署程式碼
   3.19 不支援不明的主要索引鍵
   3.20 利用關係變更 1.1 CMP 主要索引鍵類別會造成編譯錯誤
   3.21 當從 CVS 儲存庫更新時,發生反映錯誤
   3.22 從「概要」視圖中刪除 FIND 查詢
   3.23 「程式碼」頁面和 EJB 繼承
   3.24 繼承結構中的多對多關係無法適當產生 EJB QL 查詢
   3.25 SQL Server 的 FLOAT 資料類型對映問題
   3.26 Linux:針對 WebSphere Application Server 第 4 版 (Unit Test Environment) 中的 DB2 執行 1.1 CMP Bean 的連線問題
   3.27 當使用另一個專案的 Enterprise Bean 時,可能需要產生部署程式碼
   3.28 將 Enterprise Bean 對映至外部索引鍵和主要索引鍵的支援
   3.29 繼承和次要表格對映的限制
   3.30 將 EJB 1.1 的 Bean 移轉至 EJB 2.0 時,清除 Access Bean
   3.31 利用 WebSphere Application Server 4.0.6 版的轉換器和編製器部署 EJB 應用程式
   3.32 移轉含有二進位類別的 EJB 專案
   3.33 視圖的由下而上對映實作

1.0 簡介

EJB 工具提供了可用來開發 Enterprise Bean 的特殊化環境。這些 EJB 工具包含的實體如下:

這個 Readme 檔會說明和 EJB 工具相關聯的已知問題、限制以及暫行解決方法。

2.0 支援的軟體和規格

現在,ejbdeploy 指令(EJB 部署工具)的 -dbvendor 選項支援下列值(對應於支援的資料庫):

但已不再支援這些值:

3.0 已知的問題

3.1 重新整理問題

如果工作台中的檔案或資源似乎不同步或是發生了非預期的失敗,比方說,編輯器和視圖沒有反映現行部署描述子設定,從「專案」功能表中關閉再重新開啟專案可能會解決問題。

3.2 上下同時進行的對映之提示與限制

  1. 依名稱比對 - 僅會處理完全相符的項目。如果您利用 WebSphere Application Server 3.5 版相容的切換產生了綱目,或者匯入了 WebSphere Application Server 3.5 版的 JAR,您的表格名稱會加上 'tbl' 而無法辨識。
  2. 繼承 - 如果子項 Bean 沒有自己的欄位,則不會對映。您需要自行將這些項目對映到母項表格。
  3. 1.1 CMP 欄位對映不支援 java.util.Date。
  4. 如果在對映中使用了編製器,請產生對映表、儲存它、關閉再重新開啟專案,然後進行部署。

3.3 對映編輯器中的拖放支援

拖放功能僅在對映表的「方向」中受支援。比方說,如果對映表是從「由上而下」作業所建立,則您可以將 Enterprise Bean 拖至資料庫。允許的拖放作業如下:

  1. 將 Enterprise Bean 拖至表格會建立兩者間的對映。
  2. 將 Bean 拖至 DB 會建立對應的表格和直欄,並將它對映至 Bean 和屬性。

3.4 在 J2EE 視景的「導覽器」視圖中刪除表格和綱目

如果您需要刪除某個表格,請使用「資料」視景或 J2EE 視景的「J2EE 階層」視圖,如此所有相依的鏈結也會被移除。 一般而言,您不應使用「導覽器」或「J2EE 導覽器」來刪除 J2EE 資源,原因是這樣做不會更新相依性。

3.5 1.1 CMP Entity Bean 的樂觀預測

在 WSAD 5.0 中,我們加入了 Bean 開發人員的功能,用來識別過度限定的更新要用的屬性。 利用舊版 WSAD 建立的 EJB JAR 檔不含 1.1 CMP Entity Bean 的這個規格。 不過,當利用 WSAD 5.1 來部署時,支援先前的語意。 明確地說,當沒有屬性清單時,會使用所有可用的述詞。 請注意,2.0 CMP Entity Bean 的處理方式不同。 如果沒有選取任何屬性作為述詞,就不會在過度限定的更新中加入任何述詞。

3.6 繼承的提示與限制

  1. 如果您使用了 Oracle 作為資料庫,請勿在根/葉繼承結構中使用 BLOB 類型。
  2. MySQL、InstantDB、SQL92 和 SQL99 資料庫不支援根/葉繼承對映。它們不支援根/葉對映使用之複式查詢所需的 SQL set 運算子。如果要測試這些資料庫,您必須使用單一表格對映。
  3. 被繼承的 Bean 中不支援將 CMP 欄位對映至非空值的直欄。「樂觀預測」僅能設定在根 Bean 的 CMP 欄位上。

3.7 在開發期間參照執行時期 JAR 檔

如果您需要編譯在 WebSphere Application Server 執行時期可見的 JAR 檔(例如:rt.jar、xerces.jar 等等),一般的規則是,您應該利用預先定義的類別路徑變數,針對個別的執行時期安裝架構新增這些 JAR 檔。比方說,您應該對 WebSphere Application Server 4.0 版伺服器的 JAR 檔使用 WAS_PLUGINDIR 類別路徑變數,並針對 WebSphere Application Server 5.0 版伺服器的 JAR 檔使用 WAS_50_PLUGINDIR 類別路徑變數。

3.8 請勿在多份表格間對映編製類型

「對映」編輯器可讓您將編製的類型對映到不同表格中的多個直欄。這會在產生部署程式碼時導致錯誤。請確定編製類型對映內的所有直欄都屬於同一個表格。

3.9 刪除 CMP 實體不會移除對映項

當您刪除 CMP 實體時,這個 Bean 參照之相對應的對映表並不會移除其對映。在刪除實體之後,當您對這些檔案開啟「對映」編輯器時,這些對映才會移除。這是符合預期的行為。在產生部署程式碼之前,您需要先開啟「對映」編輯器。

3.10 EJB QL 限制

  1. 如果 EJB QL 查詢包含的 Enterprise Bean 有由其他 Enterprise Bean 關係組成的索引鍵,這個查詢就無效,且會在部署期間造成錯誤。 這是一個已知問題。
  2. IBM EJB QL 支援以各種方式擴充 EJB 2.0 規格,其中包括放寬某些限制、新增更多 DB2 函數的支援等等。 如果需要考慮到各種廠商資料庫或是 EJB 部署工具之間的可攜性,您應該嚴格遵守 EJB 2.0 規格中的第 11 章來撰寫所有的 EJB QL 查詢。

3.11 EJB 參照的驗證不是自動的

當您變更 EJB 本端參照、EJB 參照以及資源參照時,系統並不會自動驗證這些參照。EAR 驗證器需要明確地觸發,才能完成這些參照的驗證。

3.12 Java Bean 和檔案不支援阿拉伯文的名稱

請勿對 Java 檔、Java Bean 或 Access Bean 使用阿拉伯文名稱。在進行 MiniBank 範例時,請勿使用阿拉伯文名稱。

3.13 查詢產生限制

  1. 跨 m:n 關係的預載作業會造成產生不當的 SQL。這是一項已知的限制,未來將會解決。
  2. 跨本身參照關係的預載作業會造成產生不當的 SQL。
  3. 應該避免還沒有定義好的相同繼承階層內的母項和子項 Enterprise Bean 關係。

3.14 編輯 local-ejb-ref 鏈結時發生問題

當您嘗試在「EJB 部署描述子編輯器」的「參照」頁面中使用「瀏覽」按鈕來編輯 local-ejb-ref 鏈結時, 將無法選取沒有遠端介面的目標 Bean。暫行解決方法是刪除該參照,再重新建立它。

3.15 在部署 EJB 2.0 關係之後,作業清單中發生錯誤

如果您移除了 EJB 2.0 關係並重新產生部署程式碼,作業清單中可能會出現無效的錯誤。暫行解決方法是先移除 Bean 的部署程式碼,再重新產生它。

有時,在新增 EJB 2.0 關係並重新產生部署程式碼之後,作業清單中還是會看到無效的錯誤。在這個情況下,您只要再重新產生一次,即可移除錯誤。

3.16 遺漏非空值外部索引鍵直欄的專用 ejbCreate

如果您要在外部索引鍵直欄不是空值的綱目上執行由下而上的對映,就必須利用新增至簽章中之角色的用戶端介面類型來建立專用的 ejbCreate() 方法。 由下而上的對映不會自動完成這個動作。

3.17 使用繼承的「程式碼」頁面 CMP 欄位變更的限制

為了要支援 EJB 1.1 和 2.0 規格,我們必須為 EJB 繼承結構內的每個子類型 Bean 建立一個相符的 CMP 欄位。 如果您開啟 EJB 部署描述子編輯器,並修改「程式碼」頁面中這些欄位其中一個的名稱,在為了符合 EJB 規格而建立在子類型 Bean 中的 CMP 欄位中,不會進行對應的名稱變更。 暫行解決方法是利用 Bean 頁面中的「編輯」動作來變更名稱。

3.18 當變更 Bean 類別時,不會刪除 EJB 部署程式碼

如果要支援多個使用相同 Java 類別的 Enterprise Bean,產生的部署程式碼必須利用命名技術,使產生的部署類別有唯一名稱。 這些名稱是從現有的 Bean 類別、介面和索引鍵類別衍生來的。

如果您產生 Bean 的部署程式碼,且您要變更這些類別其中之一,您必須先刪除部署程式碼。 如果您沒有先刪除部署程式碼,就不會移除舊的產生的類別,且可能會含有編譯錯誤。 如果您利用 Bean 頁面中的「編輯」動作來變更主要欄位的類型,就可能如此。 這會將索引鍵類別自動改成指定的類型,如果主要索引鍵欄位不再有效,就會建立新的複合索引鍵。

3.19 不支援不明的主要索引鍵

EJB 工具目前不支援 EJB 2.0 規格所說明的「不明」主要索引鍵定義。暫行解決方法是定義特定主要索引鍵類別。

3.20 利用關係變更 1.1 CMP 主要索引鍵類別會造成編譯錯誤

如果要支援 1.1 CMP 關係,您必須建立鏈結類別。 這些鏈結類別需要知道 Bean 主要索引鍵類別。 如果您變更關係中所涉及的 1.1 CMP 的主要索引鍵類別,產生的鏈結類別就會包含指向舊的主要索引鍵類別的參照。 暫行解決方案是手動更新鏈結類別。 只有兩個情況需要變更。

3.21 從 CVS 儲存庫更新時,發生反映錯誤

如果在從 CVS 儲存庫更新 EJB 專案之後,「作業」顯示錯誤指出未反映類別或介面,請嘗試重新建置 EJB 專案來消除錯誤。

該錯誤看起來如下:「CHKJ2802E:無法反映 ejb-class 類別 test.SessionBean 或其中一個超類型。請檢查類別路徑。」

3.22 從「概要」視圖中刪除 FIND 查詢

在「概要」視圖中,從含有本端介面的 2.0 CMP Bean 中刪除 FIND 查詢,會無法從本端 Home 介面中移除方法宣告。 暫行解決方案是利用 EJB 部署描述子編輯器「查詢」區段中的移除按鈕。

3.23 「程式碼」頁面和 EJB 繼承

如果您在修改繼承階層中的 CMP Bean 外觀,您應該利用 EJB 部署描述子編輯器的設計頁面,不要用「程式碼」頁面。 比方說,如果您要新增或移除 CMP 欄位,或變更 CMP Bean 的主要索引鍵欄位,所有繼承 Bean 的工具會同步化這些欄位,使 Bean 與 EJB 規格維持一致。 如果您變更「程式碼」頁面中的程式碼,可能不會出現這類同步化。

3.24 繼承結構中的多對多關係無法適當產生 EJB QL 查詢

在這個實務中,您已定義了 EJB 繼承結構(根/葉或單一表格繼承),在這個結構內有 EJB Bean 的多對多關係。 在這個情況下,任何定義給這些 Bean 的 EJB QL 查詢都會有不正確的 JOIN 陳述式。

以下是這個結構的範例。

Customer <---- m:m ----> Account
                            |
                            |
                    ------inherit------
nbsp;                    
                        |         |
                   
Checking   Savings

3.25 SQL Server 的 FLOAT 資料類型對映問題

如果您的 CMP Bean 已對映至 SQL Server 資料庫,就必須將 float 類型的欄位對映至類型為 FLOAT 而不是 REAL 的直欄。

3.26 Linux:針對 WebSphere Application Server 第 4 版 (Unit Test Environment) 中的 DB2 執行 1.1 CMP Bean 的連線問題

當您在 WebSphere Application Server 第 4 版 Unit Test Environment 中,針對 DB2 來執行 1.1 CMP Bean 時,連線可能會發生問題。

暫行解決方法:設定資料庫的迴路。

比方說,如果您的資料庫名稱是 MyDB,主機名稱是 LHOST,資料庫服務埠號是 50000,請發出下列指令:

db2 catalog TCPIP node RHOST remote LHOST server 50000
db2 catalog database MyDB as MyDBAlias
db2 uncatalog db MyDB
db2 catalog database MyDBAlias as MyDB at node RHOST

如果要確認這能夠運作,請發出下列指令:db2 connect to MyDB user xxx
其中 xxx 是您的密碼。

3.27 當使用另一個專案的 Enterprise Bean 時,可能需要產生部署程式碼

如果 EJB 專案中的 Enterprise Bean 使用了另一個專案中第二個 Enterprise Bean 的 Home 或遠端介面(比方說,如果它有一個方法採用了第二個 Enterprise Bean 的遠端介面做為參數),當您變更了第二個 Enterprise Bean 的 Home 或遠端介面時, 您需要產生這兩個專案的部署程式碼。

這是為了確保第二個 Enterprise Bean 的 RMIC 產生的類別在這兩個專案中都是最新的。

3.28 將 Enterprise Bean 對映至外部索引鍵和主要索引鍵的支援

當您將 Enterprise Bean 對映到資料庫表格時,有幾個和外部索引鍵與主要索引鍵相關的限制:

3.29 繼承和次要表格對映的限制

如果您利用根/葉方式來對映繼承關係,或使用含有多份表格的次要對映,您應該從資料庫中移除外部索引鍵限制,以免發生參照整合排序問題(SQL 陳述式執行次序不正確)。

3.30 將 EJB 1.1 的 Bean 移轉至 EJB 2.0 時,清除 Access Bean

由於不支援只有本端用戶端視圖的 Enterprise Bean 使用 Access Bean,當您將 EJB 1.1 的 Bean 移轉至 EJB 2.0,且加入本端用戶端視圖,移除遠端用戶端視圖時,您可能需要執行一些手動清除作業。 如果您有資料類別 Access Bean,您必須刪除與這個 Bean 相關聯的 Factory 類別。 如果您有 Copy Helper Access Bean,您可能需要刪除 Access Bean 本身、刪除這個 Factory,以及清除 Bean 類別中可能無效的任何方法。

3.31 利用 WebSphere Application Server 4.0.6 版的轉換器和編製器部署 EJB 應用程式

如果您在 EJB 至 RDB 對映中使用轉換器和編製器,且您要部署在 WebSphere Application Server 4.0.6 版中,您必須在 WebSphere Application Server 中套用臨時修正程式。 WAS 臨時修正程式會更新您的 vaprt.jar 檔。

WAS 臨時修正程式是 PQ76109。

在 WebSphere Studio Application Developer 5.1 版中,預設轉換器和編製器所在的 vaprt.jar 檔已有了改變。 由於這些變更,WebSphere Application Server 4.0.6 版中的 vpart.jar 檔需要更新。 WAS 臨時修正程式會同步化這個 vaprt.jar 檔。

臨時修正程式的替代暫行解決方法是將 j2ee.core 外掛程式執行時期目錄中的 vaprt.jar 複製到 WAS 執行時期 lib 目錄中。 在沒有臨時修正程式的 WAS 4.0.6 版中,下列轉換器或編製器已過期:

VapBigDecimalToBooleanConverter VapBigDecimalToDoubleConverter VapBigDecimalToFloatConverter VapBigDecimalToIntegerConverter VapBigDecimalToLongConverter VapBigDecimalToShortConverter VapTimestampToUtilDateConverter NameComposer VapUSPhoneNumberComposer

3.32 移轉含有二進位類別的 EJB 專案

當您利用移轉精靈來移轉含有一或多個二進位 Java 類別(.class 檔)的 EJB 專案時,移轉作業會順利移轉含有 Java 程式檔(.java 檔)的專案元件,但不會移轉二進位類別。 您必須手動修正任何錯誤。

3.33 視圖的由下而上對映實作

當您執行由下而上的對映(根據現有的表格產生 Enterprise Bean)時,依預設,精靈不會產生視圖基礎表格的 Bean。 不過,由於必須建立外部索引鍵的關係,因此,任何有外部索引鍵的表格或有其他表格的任何外部索引鍵指向其主要索引鍵的表格,精靈都會自動建立它的 Bean。 如果您清除不建立視圖基礎表格的 Bean 勾選框,精靈就會產生資料庫綱目中之所有表格和視圖的 Bean。

返回主 Readme 檔