在 WebLogic 和 JBoss 应用程序中,<local-jndi-name> 元素为全局 JNDI 树中 Bean 的本地 home 接口定义 JNDI 名称。 该名称是在 weblogic-ejb-jar.xml 或 jboss.xml 文件中定义的。
WebSphere® 不允许将本地 home 接口映射至全局 JNDI 树中的 JNDI 名称。 它们被改为映射至局部容器的 JNDI 树。 由于该原因,程序员必须使用局部名称空间中的 JNDI 引用而不是全局名称空间中的 JNDI 名称来访问局部企业 Bean。
当在以下内容中发现 <local-jndi-name> 元素时,将触发该规则 weblogic-ejb-jar.xml 中发现<local-jndi-name>元素时,该规则将被触发。 或 jboss.xml 中发现 <local-jndi-name> 元素时,将触发此规则。 自动修复将处理 Java 文件、部署描述符和绑定,以使这些 引用在 WebSphere 上运行。
会对在其中找到 <local-jndi-name> 元素的应用程序相关的所有包进行处理。 如果找不到应用程序 EAR 项目或它与找到的 EJB 项目不关联,那么仅会对该 EJB 项目进行处理。 使相关项目正确地定义很重要。
当自动修复程序可用并已应用时,它会扫描应用程序中的所有 Java 文件,只要在其中发现 <local-jndi-name> 的应用程序中的所有文件。 它进行扫描是为了针对局部 JNDI 名称进行直接上下文查询,以及为了查询对该名称的 EJB 引用。
例如,如果本地 JNDI 名称是 ejb/myBeanLocalHome ,以下代码示例将触发对代码和/或部署描述符和绑定的更新。Java 代码在第一个示例中改为 ctx.lookup("java:comp/ejb/myBeanLocalHome") 以便 进行 EJB 引用查找。 其他两个 Java 示例保持不变。 在所有三种情况下,自动修复都会更新项目的部署描述符和绑定。
当检测到对项目的特定本地 JNDI 名称进行了查找,并且 使用变量且无法确定查找时、 web.xml 文件或 ejb-jar.xml 文件 文件或 <span.xml 文件进行修改,以包含一个 <ejb-local-ref> 用于定义本地 JNDI 名称的 Bean 的 <ejb-local-ref>。 在 EJB 项目中、 中定义的每个 Bean 都会添加 <ejb-local-ref> 元素。 ejb-jar.xml 中定义的每个 Bean 添加 <ejb-local-ref>元素。 在 web.xml 文件中,将为定义本地 JNDI 名称的 Bean 添加一个引用。 定义本地 JNDI 名称的 Bean 添加一个引用。 对于这两种情况,<ejb-local-ref> JNDI 名称会被添加到项目的 项目的绑定文件。