gpt4 book ai didi

java - EJB中的代理对象

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:47:16 25 4
gpt4 key购买 nike

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

当我们为 bean 创建接口(interface)时,我们这样做是因为我们希望实现代理模式。这对我们很有帮助,因为客户只关心我们能做什么,而不是直接绑定(bind)到一个类,而是一个可以充当真实对象的接口(interface)。

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

我是不是误解了这个概念?如果是这样的话,有人能告诉我哪里出了问题吗?

最佳答案

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

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

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

编辑:如果您对此类代理究竟能做什么感到好奇,请查看 Java 和 AOP(AspectJ 或 Spring)中的 RMI 概述。它会让您了解可以通过这种方式实现哪些类型的任务。

关于java - EJB中的代理对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7764549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com