用于 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 文件复制到 <span.xml 文件中。 从 weblogic-ejb-jar.xml 文件复制到 WebSphere 传统和 Liberty EJB 绑定文件。
例如,以下示例所显示的 MyBean2 定义了对 MyBean 的引用。
首先,<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>
然后,在 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 名称,并将其与绑定文件中的 将其与 ejb/MyBean 的本地引用 MyBean2.
如果该绑定文件不存在,那么会创建一个文件。
在 Java 代码中,可以像以下示例中一样引用命名上下文:
javax.naming.Context ctx = new javax.naming.InitialContext();
Object beanRef = ctx.lookup("java:comp/env/ejb/MyBean");