Jboss JavaEE6/7中模块和应用程序的jndi绑定有什么区别?

Jboss JavaEE6/7中模块和应用程序的jndi绑定有什么区别?,jboss,jboss7.x,jndi,jboss6.x,java-ee-7,Jboss,Jboss7.x,Jndi,Jboss6.x,Java Ee 7,我们在开发环境中从Jboss EAP 5迁移到EAP 6 我现在在我的JBOSS日志中看到以下内容。我试图理解这种绑定是如何发生的。我已经在上阅读了JBOSS文档。我仍然不完全清楚它是如何工作的。这是我的日志 java:global/customerCare/services/UserDaoImpl!com.example.services.UserDao java:app/services/UserDaoImpl!com.example.services.UserDao java:module

我们在开发环境中从Jboss EAP 5迁移到EAP 6

我现在在我的
JBOSS
日志中看到以下内容。我试图理解这种绑定是如何发生的。我已经在上阅读了JBOSS文档。我仍然不完全清楚它是如何工作的。这是我的日志

java:global/customerCare/services/UserDaoImpl!com.example.services.UserDao
java:app/services/UserDaoImpl!com.example.services.UserDao
java:module/UserDaoImpl!com.services.UserDao
java:global/customerCare/services/UserDaoImpl
java:app/services/UserDaoImpl
java:module/UserDaoImpl
这是我的
ejb

@Local
public interface UserDao {

    public static final String JNDI_NAME = "java:global/customCare/services/UserDaoImpl";

//interface methods here

}

@Stateless
public class UserDaoImpl implements UserDao {
// implement methods
}
我的疑问是:

  • 在我的
    UserDao
    接口中,我明确地将
    JNDI绑定为
    java:global/customCare/services/UserDaoImpl
    。 那么为什么我会看到我绑定了其他应用程序,比如
    app
    module

  • 应用程序
    模块
    之间有什么区别?什么时候需要绑定到这些组件?这里的一些例子将非常有帮助

  • 日志的最后三行显示绑定到
    UserDaoImpl
    。这是JBoss在没有我要求它绑定的情况下所做的事情吗?(我只为JNDI绑定设置了
    UserDao
    ,但没有设置
    UserDaoImpl

  • 我对
    JNDI名称空间
    绑定有点不了解。阅读文档对我有帮助,但帮助不大

    谢谢

    我可以回答问题2: 所有的名字都是一样的,但上下文不同

    全局名称是用于全局绑定的完整JNDI上下文,即来自客户端或其他EAR文件

    模块名可用于绑定同一应用程序,即同一EAR中的不同EJB

    本地名称用于本地绑定,即在jar或war中绑定

    使用较短的名称进行本地绑定要比每次指定一个完整的全局名称稍微有效一些

    据我所见,JBoss EAP 6在部署期间总是列出每个企业bean的三个/六个名称。它旨在帮助开发人员识别bean的JNDI名称