用于 EJB 的特定于 JBoss 的部署描述符 jboss.xml 可能包含 ejb-jar.xml 中所定义 EJB 本地引用的 JNDI 名称。 这些引用会将 EJB 本地引用映射至其 JNDI 名称。 必须将信息移至 WebSphere Application Server 绑定文件,才能让这些引用在 WebSphere Application Server 上正确地工作。
如果尚未应用源扫描程序中的相应快速修订,那么此规则会标记在 jboss.xml 文件中找到的 EJB 本地引用。在应用快速修订之后,会使用一条注释来标记 JBoss XML,该注释指示它已迁移。 这用来确定是否要运行快速修订,并且它可在迁移结束时用来表明 XML 文件已被迁移的量。
应用该快速修订时,会将 JNDI 名称从 jboss.xml 文件复制到 WebSphere 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> |
然后,在 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 名称添加至该绑定文件,然后使它与 MyBean2 的 ejb/MyBean 本地引用相关联。
如果该绑定文件不存在,那么会创建一个文件。
在 Java 代码中,可以像以下示例中一样引用命名上下文:
|
javax.naming.Context ctx = new javax.naming.InitialContext(); Object beanRef = ctx.lookup("java:comp/env/ejb/MyBean"); |