【问题标题】:Why a single EJB session bean is allowed to have multiple interfaces?为什么允许单个 EJB 会话 bean 有多个接口?
【发布时间】:2014-07-20 22:31:21
【问题描述】:

我正在从EJB 3 in Action 这本书中了解 EJB 3.0。在会话 bean 的剖析部分中提到:

客户端调用 bean 的接口称为 业务接口。这个接口本质上定义了bean 适合通过特定访问机制访问的方法。 现在要注意的有趣的事情是单个 EJB 可以有多个接口。换句话说,EJB 实现 类可以是多态的,这意味着不同的客户端使用 不同的界面可以以完全不同的方式使用它们。

我想了解为什么允许单个 EJB 具有多个接口的设计决策的原因?一个有助于理解此处概念的示例将非常有帮助。

【问题讨论】:

    标签: java ejb ejb-3.0 design-decisions


    【解决方案1】:

    原因很简单。每个接口都应该可由特定类型的客户端访问。例如,假设您正在实现一个银行系统,并为余额访问创建一个 bean。在这种情况下,您可能会使用两个接口。一个用来读取天平,一个用来改变它

    public interface ReadAccountBalance
    {
        float getBalance ();
    }
    
    public interface WriteAccountBalance
    {
        void setBalance (float balance);
    }
    
    public class AccountBalanceBean implements ReadAccountBalance, WriteAccountBalance
    {
        ...
    }
    

    现在,您可以将 ReadAccountBalance 分发给只需要读取账户余额的客户端包,而 WriteAccountBalance 将只分发给需要实际修改余额的客户端

    【讨论】:

    • EJB bean(在您的情况下为 AccountBalanceBean)是否需要实现所有接口还是可选的?
    • @Geek 与所有接口一样,您的 bean 可以实现任意数量或任意数量。显然,如果你没有实现 WriteAccountBalance 接口,那么任何客户端都无法设置余额
    猜你喜欢
    • 2012-03-24
    • 1970-01-01
    • 2012-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-03
    • 2018-01-04
    相关资源
    最近更新 更多