使用 WebSphere 連結來定義 EJB 本端參照 JNDI 名稱

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 檔案有多少內容已被移轉。

當應用自動修復時,JNDI 名稱會從 <span.xml 檔案複製到 從 weblogic-ejb-jar.xml 檔案複製到 WebSphere 傳統和 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>無狀態</session-type>
<transaction-type>儲存器</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>無狀態</session-type>
<transaction-type>儲存器</transaction-type>
<ejb-local-ref>
<description></description>
<ejb-ref-name>ejb/MyBean</ejb-ref-name>
<ejb-ref-type>階段作業</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 名稱到綁定檔案,並將其與 與 ejb/MyBean 的本地引用 MyBean2. 如果連結檔不存在,則會建立一個連結檔。

在 Java 程式碼內,可以按照下列範例來參照命名環境定義:

javax.naming.Context ctx = new javax.naming.InitialContext();
Object beanRef = ctx.lookup("java:comp/env/ejb/MyBean");