EJB 疑難排解核對清單
EJB 核對清單可以提出各種問題或作業讓您逐一探討,以幫助您判斷或除去可能發生的問題,這些問題可能會阻礙您在本產品成功地進行作業。
在本核對清單中,僅有部分項目是您在進行疑難排解程序,需自行了解的問題,有的項目則是要訣或是通往有用資訊的鏈結。
請跳到最能說明您所嘗試進行之作業的那一段:
在說明中尋找有關開發 EJB 的逐步主題:開發 Enterprise Bean - 概觀
如果要尋找有關 EJB 策略和開發的紅皮書,請參閱:利用 WebSphere Studio Application Developer 來開發 EJB 2.0
如果要尋找有關如何測試 EJB 應用程式邏輯的說明主題,請閱讀建立 Enterprise JavaBeans 的測試
檢查您建立應用程式結構的方式
查看工作區,計算那裡有幾個 EAR。
您有幾個企業應用程式?
您如何將企業應用程式模組(J2EE 應用程式用戶端專案、EJB 專案或 Web 專案),對映到您的企業應用程式用戶端專案(EAR 專案)?
檢查類別路徑是否有問題
您在使用任何 Java 公用程式專案或靜態 JAR 檔嗎?
如果您在使用靜態 JAR 檔,您將它放在哪裡?
如果您只是在 Web 應用程式使用靜態 JAR 檔,請將它們放在 WEB-INF lib 下;
如果您是想供多個企業應用程式模組(應用程式用戶端、EJB 或 Web 專案)共用,或者只供您的 EJB 應用程式在使用,請將它們放在企業應用程式 (EAR) 中。
您是否將所有的專案公用程式 JAR,都對映到要使用它們的企業應用程式模組呢?
確定您已將 Java 專案新增至企業應用程式部署描述子「模組」頁面的專案公用程式 JAR 表單中。
您是否在執行時期處理 Java 公用程式專案或靜態 JAR 檔所包含的類別時得到 java.lang.NoClassDefFoundError 堆疊追蹤?
請檢查企業應用程式模組的 Java JAR 相依關係,並且確定所有必要的 JAR 檔都已經在本頁確認打勾了(用滑鼠右鍵按一下「專案 > 內容 > Java JAR 相依關係」)。
在開發和測試企業應用程式時,需要顧慮兩種不同的類別路徑。Java 建置路徑是編譯器尋找編譯專用的相依類別時,所用的類別路徑。Java JAR 相依關係(MANIFEST.MF 檔的前端),則是執行時期尋找位於企業應用程式或位於企業應用程式所含之其他企業應用程式模組中的相依類別時所用。
因此,也許因為應用程式在工作區中編譯正常,您便認為它有效,不過最好還是在「Java JAR 相依關係」頁面中新增它們,以確認同樣的 JAR 在執行時期是否會顯示出來,以免發生 java.lang.NoClassDefFoundError 錯誤。
請務必先在「Java JAR 相依關係」選取 JAR 檔,因為它會自動將 JAR 檔新增至您的 Java 建置路徑中。
檢查並查看您的問題是不是因為規格限制所導致
您在開發 EJB 1.1 或 EJB 2.0 嗎?
請參閱 EJB 規格 。
如果您在開發 EJB 2.0,那麼這些是本端還是遠端介面 EJB?
您在開發 J2EE 1.2 或 1.3 專案嗎?
請參閱1.2 和 1.3 的 J2EE 規格
這是 Stateless Session Bean 還是 Stateful Session Bean?
您的 Session Bean 是使用儲存器管理的交易還是 Bean 管理的交易?
所有必要的資源參照都有妥善定義嗎?
您嘗試將 EJB 部署到伺服器嗎?
請進入相關的說明主題
您的應用程式使用 EJB 查詢語言 (QL) 嗎?
在 WebSphere Application Server 資訊中心的這個說明主題 中,進一步學習 EJB QL。
這個錯誤是不是在不使用 EJBQL 的情況下發生的?
請檢查 EJB 規格 ,看看您所進行的作業是否行得通。
對映 CMP 的問題
您將 EJB 對映到哪一個資料庫?
有的 EJB 部署程式碼是直接視資料庫供應商類型和您所選擇的作業系統而定。
比方說,如果您選擇 DB2 on Windows,並且產生 EJB 部署程式碼,這時,如果您的執行時期目標是 DB2 on z/OS,就可能會失敗。
請確定針對您 EJB 所定義的後端資料庫,就是您所要的執行時期資料庫和作業系統,這樣,當您產生 EJB 部署程式碼時,它才能適用於該平台。
理想的情況是,將開發和生產資料庫都放在同一個平台上;
不過,現實條件可能做不到,因此,您可以建立多個後端系統,在 EJB 部署描述子中彼此切換。
請務必在 EJB 部署描述子變更後端系統之後,再次產生 EJB 部署程式碼。
驗證您的資料庫 Meta 資料檔沒有損毀
查看您工作區中的 EJB 模組後端資料夾。
資料庫和綱目定義檔中所列的所有表格,都可以利用對應的編輯器來開啟嗎?
如果可以,就表示您的 Meta 資料檔沒有問題。
如果不可以,請利用「EJB 到 RDB 的對映」精靈(用滑鼠右鍵按一下您的 EJB 專案 > EJB 到 RDB 的對映 > 產生對映),再次匯入資料庫資訊,並且使用新後端資訊。
驗證您確實將 EJB 妥善對映到資料庫:(下面的是非題可以提醒您)
所有的 EJB 屬性和對應的表格是否都有全部對映?
定義的 EJB 關係是否有正確接獲實際的表格關係?
CMR 是否有妥善對映到外來鍵限制?
訊息 驅動的 Bean 的問題
佇列/主題及其 Connection Factory 是否都有妥善配置?
是否有定義接聽器埠?
是否有妥善指定 JNDI 名稱?
是否有妥善指定並且使用 Connection Factory 所要求的 JAAS 安全 ID?
EJB 應用程式異常狀況不是由 MDB 擲出,因為它們沒有用戶端來截取它們
BMP EJB 是進階的程式設計模型。
如果要為程式碼除錯,或者學習如何撰寫 BMP,最好的參考資源,就是有關這個主題的書籍。
請參閱本主題頂端的有用的指引資訊 ,尋找通往書籍的鏈結。
部署 EJB 的問題
資料來源 JNDI 名稱與 EJB 專案或個別的 CMP EJB 有妥善關聯嗎?
EJB 部署描述子的 WebSphere 連結區段中所指定的後端 ID 正確嗎?
EJB 專案可能有好幾個後端,每一個都必須產生它自己的 EJB 部署程式碼
是否已指定並瞭解於 EJB 部署描述子中的交易屬性和存取目的?
這項資訊的最佳來源,是在 WebSphere Application Server 資訊中心。
請參閱資訊中心和程式庫網站 中的這份清單
產生程式碼是否運作正常?
您是否曾嘗試除錯,或者逐步執行所產生的程式碼,以找出不當的程式碼或查詢嗎?
這不是件容易的差事,完全要仰賴您的技術層次而定。
在疑難排解 ejbdeploy 問題時,請先研究工具,再為產生的程式碼除錯。
這是伺服器 配置的問題嗎?
伺服器相關資訊的最佳來源,是在 WebSphere Application Server 資訊中心。
請參閱資訊中心和程式庫網站 所列的資訊。
下面是您可能會對自己提出的幾個問題:
主控台所指出的伺服器是哪一版?
這是資料來源配置的問題嗎?
伺服器是全新啟動嗎?
這是伺服器執行時期的問題嗎?
伺服器相關資訊的最佳來源,是在 WebSphere Application Server 資訊中心。
請參閱資訊中心和程式庫網站 所列的資訊。
下面是您可能會對自己提出的幾個問題:
檢查 Websphere 疑難排解要訣
這是類別載入的問題嗎?
這是資料來源配置的問題嗎?
伺服器是全新啟動嗎?
當您嘗試將應用程式發佈到遠端 WebSphere Application Server 時,是否出現「將保存檔上載到伺服器失敗」訊息?
如果執行 Rational Developer 的機器無法連線測試遠端伺服器的 serverindex.xml 內含的 IP 位址或主機名稱,可能會導致這則訊息。
如果要解決這個問題,請在伺服器機器上,修改定義於 <WAS_HOME>\profiles\<PROFILENAME>\config\cells\<CELLNAME>\nodes\<NODENAME>\serverindex.xml 檔中的主機名稱,並將主機名稱變更為執行 Rational Developer 的機器可以解析的主機名稱。
在打電話給支援中心 ,請它們解決 EJB 問題之前
儲存您的配置,並且重新啟動伺服器
建立一個可以重新產生的 Test Case
記下您所接獲的任何錯誤訊息
關於電話支援中心
上層主題: 配置核對清單
相關作業
疑難排解簡介
聯絡 IBM 軟體支援中心