不要使用區域 JNDI 名稱

在 WebLogic 和 JBoss 應用程式中,<local-jndi-name> 元素會為廣域 JNDI 樹狀結構中 Bean 的區域起始目錄定義 JNDI 名稱。 該名稱定義於 weblogic-ejb-jar.xmljboss.xml 檔。

WebSphere® 不容許將區域起始目錄,對映至廣域 JNDI 樹狀結構中的 JNDI 名稱。 而是會將其對映至區域儲存器的 JNDI 樹狀結構中。 因此,程式設計師必須使用區域名稱空間中的 JNDI 參照,來存取區域 Enterprise Bean;而不是使用廣域名稱空間中的 JNDI 名稱。

weblogic-ejb-jar.xmljboss.xml 中找到 <local-jndi-name> 元素時,會觸發此規則。 原始檔掃描器提供了快速修正程式。快速修正程式會處理 Java 檔、部署描述子和連結,讓這些參照能在 WebSphere 中運作。

會處理與應用程式(在其中可找到 <local-jndi-name> 元素)相關的所有套件。 如果找不到應用程式 EAR 專案,或找到的應用程式 EAR 專案與 EJB 專案沒有關聯,則只處理 EJB 專案。 正確地定義相關的專案非常重要。

在原始檔掃描器中執行快速修正程式時,會在找到 <local-jndi-name> 的應用程式中掃描所有 Java 檔。它會掃描區域 JNDI 名稱的直接環境定義查閱,也會掃描該名稱的 EJB 參照查閱。

例如,如果區域 JNDI 名稱是 ejb/myBeanLocalHome,則下列程式碼範例會觸發程式碼及/或部署描述子和連結的更新項目。

Java 查閱範例:

ctx.lookup("ejb/myBeanLocalHome");

ctx.lookup("java:comp/ejb/myBeanLocalHome");

ctx.lookup(myBeanLocalHomeNameVariable);

第一個範例中的 Java 程式碼已變更為 ctx.lookup("java:comp/ejb/myBeanLocalHome"),以便完成 EJB 參照查閱。 另外兩個 Java 範例保持不變。 在所有這 3 種情況下,快速修正程式都會更新專案的部署描述子和連結。

當偵測到對專案執行了特定區域 JNDI 名稱的查閱時,以及當使用了變數而導致無法判定查閱時,會修改 web.xml 檔或 ejb-jar.xml 檔,以包括定義了區域 JNDI 名稱的 Bean 的 <ejb-local-ref>。 對於 EJB 專案,會將 <ejb-local-ref> 元素新增至定義於 ejb-jar.xml 的每一個 Bean。 對於 web.xml 檔,會為定義了區域 JNDI 名稱的 Bean 新增一個參照。 對於這兩種情況,都會將 <ejb-local-ref> JNDI 名稱新增至專案的連結檔