Java ee 6/7 中模块和应用程序的 jndi 绑定有什么区别?
what is the difference between jndi binding of module and app in Java ee 6/7?
我们在开发环境中从 Jboss EAP 5
迁移到 EAP 6。
我现在在 JBOSS
日志中看到以下内容。我试图了解这种绑定是如何发生的。我在 JNDI namespace binding 上阅读了 JBOSS docs
。我仍然不完全清楚它是如何工作的。这是我的日志。
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
这是我的 EJBs
@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 binding
设为 java:global/customCare/services/UserDaoImpl
。
那为什么我看到我绑定了其他人,比如 app
和 module
.
app
和module
有什么区别?什么时候需要绑定到这些组件?这里的一些例子会很有帮助
日志的最后三行显示绑定到 UserDaoImpl
。它是 JBoss 没有我要求它绑定的东西吗? (我只为 JNDI 绑定设置了 UserDao
而不是 UserDaoImpl
)。
我对JNDI Namespace
绑定有点不了解。阅读文档对我有帮助,但程度不高。
谢谢
我可以回答疑惑2:
所有的名字都是一样的,但上下文不同。
全局名称是一个完整的 JNDI 上下文,用于全局绑定,即。来自客户端或来自另一个 EAR 文件
模块名称可用于在同一应用程序内绑定,即同一 EAR 内的不同 EJB
本地名称用于本地绑定,即在jar或war内。
使用较短的名称在本地绑定比每次都指定一个完整的全局名称稍微高效一些。
据我所知JBoss EAP 6 在部署期间总是会列出每个企业 bean 的三/六个名称。它旨在帮助开发人员识别 bean 的 JNDI 名称。
我们在开发环境中从 Jboss EAP 5
迁移到 EAP 6。
我现在在 JBOSS
日志中看到以下内容。我试图了解这种绑定是如何发生的。我在 JNDI namespace binding 上阅读了 JBOSS docs
。我仍然不完全清楚它是如何工作的。这是我的日志。
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
这是我的 EJBs
@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 binding
设为java:global/customCare/services/UserDaoImpl
。 那为什么我看到我绑定了其他人,比如app
和module
.app
和module
有什么区别?什么时候需要绑定到这些组件?这里的一些例子会很有帮助日志的最后三行显示绑定到
UserDaoImpl
。它是 JBoss 没有我要求它绑定的东西吗? (我只为 JNDI 绑定设置了UserDao
而不是UserDaoImpl
)。
我对JNDI Namespace
绑定有点不了解。阅读文档对我有帮助,但程度不高。
谢谢
我可以回答疑惑2: 所有的名字都是一样的,但上下文不同。
全局名称是一个完整的 JNDI 上下文,用于全局绑定,即。来自客户端或来自另一个 EAR 文件
模块名称可用于在同一应用程序内绑定,即同一 EAR 内的不同 EJB
本地名称用于本地绑定,即在jar或war内。
使用较短的名称在本地绑定比每次都指定一个完整的全局名称稍微高效一些。
据我所知JBoss EAP 6 在部署期间总是会列出每个企业 bean 的三/六个名称。它旨在帮助开发人员识别 bean 的 JNDI 名称。