在 20.0.0.12 之前的 Liberty 版本中,EJB 元件未連結至伺服器根目錄的「Java 命名和目錄介面 (JNDI)」名稱空間,因為它們是在 WebSphere Application Server Traditional 中,因此 ibm-ejb-jar-bnd.xml 或 ibm-web-bnd.xml 檔中的 @EJB 查閱及連結可能需要移轉。 如果使用的不是 Liberty 20.0.0.12 或更新版本,則這些查閱必須使用可攜式 JNDI 語法(針對在相同伺服器內管理的 EJB 元件),以及 corbaname: URL(針對在其他伺服器內管理的 EJB 元件)。
在 Liberty 20.0.0.12 版之前,僅接受下列名稱空間:
java:global/java:app/java:module/java:comp/corbaname:此規則會標示 @EJB 註釋 lookup 不是以上述其中一個名稱空間開頭的屬性值。
//this lookup will be flagged
@Stateless
@EJB(lookup="ejb/myApp/myModule/MyBeanComponent")
此規則還會標示以 "ejblocal:" 開頭的字串文字。
//this will be flagged
new InitialContext().lookup("ejblocal:" + getEJBName());
此規則也會標示未使用上述其中一個名稱空間的 JNDI 名稱。 binding-name 中的屬性值 <ejb-ref> ibm-ejb-jar-bnd.xml 和 ibm-web-bnd.xml 檔中的元素。
//this binding will not be flagged
<ejb-ref name="TestBean" binding-name="java:global/TestApp/TestModule/TestBean!test.TestRemoteInterface">
此規則也會標示未使用上述其中一個名稱空間的 JNDI 名稱。 jndiName 中的屬性值 <ejbRefBindings> ibm-ejb-jar-bnd.xmi 和 ibm-web-bnd.xmi 檔中的元素。
//this JNDI name will be flagged
<ejbRefBindings jndiName="java:myFolder/">
如需在 Liberty 中使用 Enterprise JavaBeans 2.x 的相關資訊,請參閱在 Liberty 中將 Enterprise JavaBeans 與遠端介面搭配使用。