【问题标题】:EJB - How to transfer complex object to presentation tier?EJB - 如何将复杂对象传输到表示层?
【发布时间】:2015-09-18 04:28:06
【问题描述】:

我是 Ejb 开发的新手,所以这可能是一个新手问题。 我正在开发一个具有通用服务外观模式的应用程序;这样,我的本地和远程接口无法知道我的会话 bean 参数,所以我只能在外观层和表示层之间传递简单的数据。 哪个是最好的解决方案,可以在外观和表示层之间传递我的 bean 的相同内容?我应该以某种方式复制我的 bean 以使其在表示层之外可见吗?

谢谢

【问题讨论】:

    标签: java service ejb javabeans facade


    【解决方案1】:

    您的 SessionBean 不应在服务层和表示层之间传输。通常,您的表示层应该具有使用@EJB CDI 框架初始化的远程或本地服务接口的引用。

    幕后:

    然后,CDI 框架会注入您的服务接口实现的一个实例。如果您正在远程使用该服务,它会使用 RMI 技术来获取该实例并使用 JRMP 协议传输存根。

    我认为您不想在这些层之间传输这些 SessionBean。您需要将复杂的 DTO(数据传输对象)作为参数传递给 SessionBean 的方法。我的理解对吗?

    如果是这样,您可能想要创建一些实现java.io.Serializable 接口的POJO(普通的旧Java 对象,其中包含一些属性或字段和一些setter getter 方法+ 至少一个默认的无参数constructor)。

    在这种情况下,您可以使用这个 java 对象作为 SessionBean 方法的参数。

    希望这会有所帮助,

    祝你好运。

    【讨论】:

    • 感谢@staefi 的回答我唯一的问题是我有不同的项目:A)演示 B)接口 C)bean 和外观 - A)对 B)有依赖,C)有依赖在 B) 那么,我可以把我的 DTO 放在哪里?
    • @dbocca:您的一些 DTO 可能只是一些与您的实体类(EntityBeans)等效的 POJO。在这种情况下,最好将它们放在项目(可能是 c)项目的数据访问层中。在其他情况下,它们可能驻留在您的 B)interfaces 项目中,因为它们用于这些接口中方法的参数中。我认为您在数据访问层中不需要它们。
    • 我想我会把 DTO 放在 B) 项目中。非常感谢! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-22
    • 2011-01-04
    • 1970-01-01
    相关资源
    最近更新 更多