【问题标题】:Stateless Session Beans Object Identity无状态会话 Bean 对象标识
【发布时间】:2017-07-24 12:11:46
【问题描述】:

EJB 3.2 规范第 3.4.7.2 节无状态会话 Bean 显示以下代码来演示相等性:

@EJB Cart cart1;
@EJB Cart cart2;
...
if (cart1.equals(cart1)) { // this test must return true
...
}

【问题讨论】:

    标签: ejb-3.1 java-ee-7


    【解决方案1】:

    好吧,这并不明显,我们实际上是在谈论对容器管理的代理的引用。

    但是,该示例主要与 Stateful bean 一起使用,其中相同的等于指令返回 false。在这种情况下,容器会返回一个新的引用,最终得到两个不同的 bean。

    更新

    嗯...我犯了一个错误,因为我读过cart1.equals(cart2)。在这种情况下,我不得不说,正如你所注意到的,这几乎是显而易见的。

    但是,仅仅因为它不是您使用new 获得的简单引用,而是应用服务器正在为您管理的东西,所以很高兴知道它正在为您提供相同的对象身份。这在Stateful 的情况下尤其正确和基本。

    现在我想不出Stateless bean 与Stateful 相比具有相同对象标识的任何有用用途,但我确信有一些示例。

    【讨论】:

    • 实际上根据第 3.4.7.1 节中的规范Stateful 会话bean 声明cart1.equals(cart1) 必须-也-返回true
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-31
    • 2018-07-17
    • 2011-08-14
    • 2011-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多