使用 WebSphere 绑定来定义 EJB 本地引用 JNDI 名称

用于 EJB 的特定于 JBoss 的部署描述符 jboss.xml 可能包含 ejb-jar.xml 中所定义 EJB 本地引用的 JNDI 名称。 这些引用会将 EJB 本地引用映射至其 JNDI 名称。 必须将信息移至 WebSphere Application Server 绑定文件,才能让这些引用在 WebSphere Application Server 上正确地工作。

该规则会标记在 jboss.xml 文件中的 EJB 本地引用、 当自动修复可用时, JBoss XML 会用注释标记,表明它已被迁移。 用于决定是否运行自动修复,也可在迁移结束时使用 可在迁移结束时用于指示 XML 文件迁移了多少内容。

当自动修复可用时,JNDI 名称将从 <span.xml 文件复制到 <span.xml 文件。 从 jboss.xml 文件复制到 WebSphere 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>

然后,在 jboss.xml 文件中定义相应的 <ejb-local-ref> JNDI 名称:


<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 名称,并将其与绑定文件中的 将其与 ejb/MyBean 的本地引用 MyBean2. 如果该绑定文件不存在,那么会创建一个文件。

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

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