用于 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>无状态</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>
然后,在 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");