在 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 文件会被修改为包含定义了该局部 JNDI 名称的 Bean 的 <ejb-local-ref>。 对于 EJB 项目,<ejb-local-ref> 元素会添加至 ejb-jar.xml 中定义的每个 bean。 对于 web.xml 文件,会针对定义了该局部 JNDI 名称的 Bean 而添加一个引用。 对于以上两种情况,<ejb-local-ref> JNDI 名称都会添加至项目的绑定文件。