使用 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 名称从 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 名称添加至该绑定文件,然后使它与 MyBean2ejb/MyBean 本地引用相关联。 如果该绑定文件不存在,那么会创建一个文件。

在 Java 代码中,可以像以下示例中一样引用命名上下文:

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