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