用本地引用提高ejb访问效率
ejb 1.0和1.1规范只定义了一种在ejb组件中引用另一组件的方法,即通过bean的远程接口。如果两个bean都在同一个容器之内,则这种网络开销是不必要的。为解决这个问题,ejb 2.0规范定义了一种新的ejb引用类型,即本地引用。
一、两种引用类型
为了从其他ejb组件访问某个bean,容器提供了一种特殊的机制。这种机制允许一个bean提供者通过称为ejb引用的“逻辑名字”引用另一个ejb的home。ejb容器利用应用的部署描述器为ejb构造环境,而这些引用在部署描述器中作为特殊的项目声明。在部署描述器中,部署者把组件代码中要用到的ejb引用绑定到其他被引用ejb的home。
如前所述,在ejb 2.0规范出现之前,在一个ejb中引用其他bean只有一种方法,即通过远程接口,它要求进行跨越网络的远程过程调用。如果某个事务由多个bean协作完成,通过网络进行多个对象的汇集和释放将是一项相当繁重的工作。
ejb 2.0规范新增了一种本地接口类型,允许在同一容器之内的bean直接互相引用,避免了远程接口的网络开销。本地接口是一种标准的java接口,而不是从rmi继承得到。ejb组件的定义可以包含本地接口或远程接口,或者两者都定义。
本地引用的指定方式和传统的远程引用一样,即在部署描述器中指定。事实上,本地引用的部署描述元素与远程引用的描述元素完全对应。
下面的代码片断是一个典型的远程引用:
product
ejb/product
entity
com.xyz.widgets.producthome
com.xyz.widgets.product
../products/product.jar#product
下面的代码片断是同一bean的本地引用:
product
ejb/product
entity
com.xyz.widgets.producthome
com.xyz.widgets.product
../products/product.jar#product
下表简要说明了各个元素的用途:
ejb 1.0和1.1规范只定义了一种在ejb组件中引用另一组件的方法,即通过bean的远程接口。如果两个bean都在同一个容器之内,则这种网络开销是不必要的。为解决这个问题,ejb 2.0规范定义了一种新的ejb引用类型,即本地引用。
一、两种引用类型
为了从其他ejb组件访问某个bean,容器提供了一种特殊的机制。这种机制允许一个bean提供者通过称为ejb引用的“逻辑名字”引用另一个ejb的home。ejb容器利用应用的部署描述器为ejb构造环境,而这些引用在部署描述器中作为特殊的项目声明。在部署描述器中,部署者把组件代码中要用到的ejb引用绑定到其他被引用ejb的home。
如前所述,在ejb 2.0规范出现之前,在一个ejb中引用其他bean只有一种方法,即通过远程接口,它要求进行跨越网络的远程过程调用。如果某个事务由多个bean协作完成,通过网络进行多个对象的汇集和释放将是一项相当繁重的工作。
ejb 2.0规范新增了一种本地接口类型,允许在同一容器之内的bean直接互相引用,避免了远程接口的网络开销。本地接口是一种标准的java接口,而不是从rmi继承得到。ejb组件的定义可以包含本地接口或远程接口,或者两者都定义。
本地引用的指定方式和传统的远程引用一样,即在部署描述器中指定。事实上,本地引用的部署描述元素与远程引用的描述元素完全对应。
下面的代码片断是一个典型的远程引用:
下面的代码片断是同一bean的本地引用:
下表简要说明了各个元素的用途:

闽公网安备 35060202000074号