用于 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 名称从 weblogic-ejb-jar.xml 文件复制到 WebSphere Traditional 和 Liberty EJB 绑定文件。
例如,以下示例所显示的 MyBean2 定义了对 MyBean 的引用。
首先,在 ejb-jar.xml 文件中定义 <ejb-local-ref>:
|
<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> |
然后,在 weblogic-ejb-jar.xml 文件中定义相应的 <ejb-local-ref> JNDI 名称:
|
<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"); |