不要使用區域 JNDI 名稱

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

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

當 <local-jndi-name> 元素出現在 weblogic-ejb-jar.xml 中找到 <local-jndi-name> 元素時,會觸發此規則。 或 jboss.xml 中找到 <local-jndi-name> 元素時,會觸發此規則。 自動修復將處理 Java 檔案、部署描述符和綁定,使這些 引用在 WebSphere 上運作。

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

當自動修復可用並已套用時,它會掃描所有應用程式中的 Java 檔案,只要在這些檔案中發現 <local-jndi-name> 的應用程式中的所有檔案。 它會掃描區域 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 範例保持不變。 在這三種情況下,自動修復都會更新專案的部署描述符和綁定。

當偵測到對專案執行了特定區域 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 名稱新增至專案的連結檔