EJB中的代理对象

幸运的路克 :

我正在阅读Enterprise JavaBeans 3.1书籍,我想知道我是否正确理解EJB代理对象的概念。我现在知道它遵循代理模式,并且我已经阅读了一些。

当我们为bean创建接口时,我们之所以这样做是因为我们希望实现代理模式。这对我们有帮助,因为客户只关心我们可以做什么,而不是直接绑定到类,而是可以像实际对象一样作用的接口。

因此,容器可能会实例化实现相应接口的代理对象,并在为我们调用真正的EJB之前添加一些魔术代码(网络代码),因为代理对象是自动创建的吗?

我误解了这个概念吗?如果是这样,有人可以告诉我怎么了吗?

马大:

正确。如果您的应用程序局限于本地JVM,那么您为bean编写的接口就足够了。在这种情况下,不需要代理,因为可以实例化并直接提供实现类。

EJB的客户端无法在其实现类上工作,因为它们不在类路径中。EJB是位置透明的,您可以通过网络或从同一服务器上的另一个应用程序调用它们,但是它们被不同的类加载器隔离。在这种情况下,您需要具有代理对象来封送,通过网络发送和解封提供给EJB调用的参数以及收到的这些调用的结果。在客户端,您需要一个虚拟EJB接口实现,该实现将您的调用转发到安装了该EJB的服务器。

代理还处理其他功能,例如围绕EJB方法调用的开始/结束事务。

编辑:如果您很好奇这样的代理可以做什么,请看一下Java和AOP中的RMI概述(在AspectJ或Spring中)。它将使您了解可以通过这种方式执行哪些类型的任务。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章