Liberty 舊版中 Enterprise JavaBeans 查閱的行為變更

在 20.0.0.12 之前的 Liberty 版本中,EJB 元件未連結至伺服器根目錄的「Java 命名和目錄介面 (JNDI)」名稱空間,因為它們是在 WebSphere Application Server Traditional 中,因此 ibm-ejb-jar-bnd.xmlibm-web-bnd.xml 檔中的 @EJB 查閱及連結可能需要移轉。 如果使用的不是 Liberty 20.0.0.12 或更新版本,則這些查閱必須使用可攜式 JNDI 語法(針對在相同伺服器內管理的 EJB 元件),以及 corbaname: URL(針對在其他伺服器內管理的 EJB 元件)。

在 Liberty 20.0.0.12 版之前,僅接受下列名稱空間:

此規則會標示 @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.xmlibm-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.xmiibm-web-bnd.xmi 檔中的元素。


//this JNDI name will be flagged
<ejbRefBindings jndiName="java:myFolder/">

如需在 Liberty 中使用 Enterprise JavaBeans 2.x 的相關資訊,請參閱在 Liberty 中將 Enterprise JavaBeans 與遠端介面搭配使用