EJB中的本地/远程和无接口视图是什么?

Luc*_*uke 76 java ejb java-ee

我试图了解我们在EJB中需要不同客户端视图的目的和原因.有人可以试着解释一下吗?

rin*_*rer 124

远程客户端视图

当您的EJB及其客户端处于分布式环境中时 - 意味着EJB和客户端将驻留在单独的Java虚拟机上.示例:托管在WebSphere Application Server上的EJB和使用托管在Tomcat服务器上的EJB API的Servlet.

本地客户端视图

仅当保证其他企业bean或客户端仅在单个JVM中寻址bean时.示例,EJB以及部署在同一WebSphere服务器上的Servlet.

无界面视图

与本地客户端视图几乎相同,但存在差异.在这种情况下,您的bean类不需要实现客户端视图接口.bean类的所有公共方法都会自动向调用者公开.无接口视图总是通过注入或JNDI查找获取EJB引用 - 就像本地或远程视图一样; 但是,EJB类型的EJB引用是bean类类型而不是本地接口的类型.这是作为Java EE6的一部分引入的便利.

本地客户端视图与无接口视图的区别

在无接口视图的情况下,客户端和目标bean必须打包在同一个应用程序(EAR)中.在本地视图的情况下,客户端可以打包在与企业应用程序不同的应用程序中.因此,这为细粒化组件提供了更大的灵活性.

您可以使用本地客户端视图与无接口视图,具体取决于您的API使用方案.非接口视图很可能在将来的规范中接收灵活的功能.

原因

从历史上或其他方面来说,希望使用EJB服务的客户端应该"查找"容器上的bean(具有某些初始上下文).这是因为所有调用都是通过容器提供的特殊EJB引用(代理)完成的.这允许容器提供所有其他bean服务,例如池化,容器管理的事务等.因此,客户端无法使用new运算符显式实例化EJB .客户端视图通过客户端可以访问的某些接口提供.服务器端的代理实现基于这些接口完成.如上所述,定义不同的客户端视图以适应不同的部署方案.

  • 我想知道是否真的如此,可以在不同的企业应用程序之间使用本地客户端视图.在EJB 3.2规范的3.2.2节中,声明通过本地客户端视图从不同应用程序调用bean是特定于供应商的,并且可能在容器中不受支持.您有任何特定的应用服务器吗? (5认同)
  • 如果你使用`new`,你最终得到一个新实例.就这样.在汇集,设置其上下文等方面,新实例不会从容器中获得任何"支持".您自己运行. (2认同)