我试图理解 EJB 中不同客户端视图的目的和原因。有人可以尝试解释一下吗?
远程客户端查看
当您的 EJB 及其客户端位于分布式环境中时,这意味着 EJB 和客户端将驻留在单独的 Java 虚拟机上。示例:托管在 WebSphere Application Server 上的 EJB 和使用 Tomcat 服务器上托管的 EJB API 的 Servlet。
本地客户端视图
仅当保证其他企业 Bean 或客户端仅在单个 JVM 内寻址该 Bean 时。例如,EJB 以及 Servlet 部署在同一 WebSphere 服务器上。
无界面视图
与本地客户端视图几乎相同,但也有差异。在这种情况下,您的 bean 类不需要实现客户端视图接口。 bean 类的所有公共方法都会自动暴露给调用者。无接口视图始终获取 EJB 引用 - 就像本地或远程视图一样 - 通过注入或 JNDI 查找;但是,EJB引用的Java类型是bean类类型而不是本地接口类型。这是作为 Java EE6 的一部分引入的一项便利功能。
本地客户端视图和无接口视图的区别
在无接口视图的情况下,客户端和目标bean必须打包在同一个应用程序(EAR)中。在本地视图的情况下,客户端可以打包在与企业应用程序不同的单独应用程序中。因此,这在细粒度组件方面提供了更大的灵活性。
您可以根据您的 API 使用场景使用本地客户端视图还是无接口视图。无界面视图很可能在未来的规范中获得灵活的功能。
Reason
从历史上看或其他情况,希望使用 EJB 服务的客户端应该“查找”容器上的 bean(具有某些初始上下文)。这是因为所有调用都是通过容器提供的特殊 EJB 引用(代理)进行的。这允许容器提供所有附加的 bean 服务,例如池化、容器管理的事务等。因此,客户端无法显式实例化 EJBnew
操作员。客户端视图是通过客户端可以访问的某些接口提供的。服务器端的代理实现就是基于这些接口来完成的。如上所述,定义了不同的客户端视图以适应不同的部署场景。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)