代码之家  ›  专栏  ›  技术社区  ›  Michael Borgwardt

在EJB3无状态会话be an上调用remove()是否重要?也许在WebLogic上?

  •  1
  • Michael Borgwardt  · 技术社区  · 14 年前

    我正在将EJB2应用程序迁移到EJB3(删除所有这些部署描述符是多么令人满意的任务!)它以前在WebLogic上运行,现在在GlassFish上运行。

    任务进展得很顺利,但有一件事让我担心:当前的代码非常小心地确保 EJBObject.remove() 当bean完成它的工作时调用它,而其他开发人员(不幸的是非常模糊)有关于“坏事情”的记忆,当它没有完成时发生。

    但是,对于EJB3,实现类不实现 EJBObject ,所以没有 remove() 要调用的方法。我的理解是,在无状态会话bean上调用它实际上没有任何意义,因为它们是无状态的。

    这些“坏东西”可能是特定于WebLogic的吗?如果没有,还有什么?我应该避免EJB3的全部重量,并保留一个扩展的远程接口吗? 弹出窗口 ?或者只是把它作为货物崇拜程序注销,删除所有那些“尝试/最终”条款?

    我倾向于后者,但感觉不太舒服。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Brett Kail    14 年前

    我不熟悉WebLogic的实现,但我无法想象它的重要性。我希望slsb包装器上的每个方法调用在方法调用之前从池中分配一个bean并在调用之后释放它,所以没有什么可供remove()执行的。

    我会把它作为货物邪教程序注销。据猜测,有人曾经忘记为sfsb调用remove,发现发生了坏事情,所以模式被扩展到了所有会话bean。

        2
  •  0
  •   Hürol Türen    14 年前

    这是正确的。您不在EJB3中实现EJB对象,这就是您不能调用remove()方法的原因。实际上EJB3拥有的是依赖注入,它与EntityManager一起工作。

    现在,我正在将应用程序从EJB2.1迁移到EJB3,我认识到我可以通过EntityManager解决这个问题。

    @资源 私人实体经理Em;

    在一个移除方法中,你可以写 Em.移除(您的对象);

    希望这有帮助