EJB 的 WebLogic 專用部署描述子 weblogic-ejb-jar.xml 可能含有 ejb-jar.xml 中所定義的 EJB 本端參照 JNDI 名稱。 這些參照會將 EJB 本端參照對映至其 JNDI 名稱。 為了使這些參照能在 WebSphere Application Server 上正確運作,必須將資訊移至 WebSphere Application Server 連結檔。
此規則會標示在 weblogic-ejb-jar.xml 檔中找到的 EJB 本端參照。 在原始檔掃描器中提供了快速修正程式。 套用快速修正程式之後,WebLogic XML 會標示註解,指出該 XML 已移轉。 這用來決定是否執行快速修正程式,並且可以在移轉結束時使用它,來指出 XML 檔中已移轉的項目數量。
當套用快速修正程式時,會將 weblogic-ejb-jar.xml 檔中的 JNDI 名稱複製到 WebSphere Traditional 及 Liberty EJB 連結檔。
舉例來說,下列範例顯示定義了 MyBean 參照的 MyBean2。
首先,將 <ejb-local-ref> 定義在 ejb-jar.xml 檔中:
|
<ejb-jar> <enterprise-beans> <session> <display-name>MyBean</display-name> <ejb-name>MyBean</ejb-name> <home>com.ibm.ejb.MyBeanHome</home> <remote>com.ibm.ejb.MyBean</remote> <ejb-class>com.ibm.ejb.MyBeanBean</ejb-class> <session-type>Stateless</session-type> <transaction-type>Container</transaction-type> <jndi-name>ejb.MyBean</ejb-name> ... </session> <session> <display-name>MyBean2</display-name> <ejb-name>MyBean2</ejb-name> <home>com.ibm.ejb.MyBean2Home</home> <remote>com.ibm.ejb.MyBean2</remote> <ejb-class>com.ibm.ejb.MyBean2Bean</ejb-class> <session-type>Stateless</session-type> <transaction-type>Container</transaction-type> <ejb-local-ref> <description></description> <ejb-ref-name>ejb/MyBean</ejb-ref-name> <ejb-ref-type>Session</ejb-ref-type> <local-home>com.ibm.ejb.MyBeanHome</local-home> <local>com.ibm.ejb.MyBean</local> </ejb-local-ref> <jndi-name>ejb.MyBean2</ejb-name> ... </session> <enterprise-beans> <ejb-jar> |
接著,將對應的 <ejb-local-ref> JNDI 名稱定義在 weblogic-ejb-jar.xml 檔中:
|
<weblogic-ejb-jar> <weblogic-enterprise-bean> <ejb-name>MyBean</ejb-name> <jndi-name>ejb.MyBean</jndi-name> </weblogic-enterprise-bean> <weblogic-enterprise-bean> <ejb-name>MyBean2</ejb-name> <ejb-local-reference-description> <ejb-ref-name>ejb/MyBean</ejb-ref-name> <jndi-name>ejb.MyBean</jndi-name> </ejb-local-reference-description> <jndi-name>ejb.MyBean2</jndi-name> </weblogic-enterprise-bean> </weblogic-ejb-jar> |
快速修正程式將 ejb.MyBean JNDI 名稱新增至連結檔,並讓它與 MyBean2 的 ejb/MyBean 本端參照相關聯。
如果連結檔不存在,則會建立一個連結檔。
在 Java 程式碼內,可以按照下列範例來參照命名環境定義:
|
javax.naming.Context ctx = new javax.naming.InitialContext(); Object beanRef = ctx.lookup("java:comp/env/ejb/MyBean"); |