gpt4 book ai didi

java - 本地无状态 EJB 与远程 EJB

转载 作者:太空宇宙 更新时间:2023-11-04 13:35:26 26 4
gpt4 key购买 nike

我是 EJB 方面的新手,但我已经获得了 EJB 级别的提升。
该层由一个 EJB 组成,它公开可用的操作:

@Stateless(name = "myejb")
public class Facade implements FacadeRemote
{
@EJB
private EntityAHomeLocal entityAHome;

@EJB
private EntityBHomeLocal entityBHome;

// methods signatures and implementations
}

正如您所看到的,此 EJB 使用其他本地 EJB 来管理实体上的操作。

@Stateless
public class EntityAHome implements EntityAHomeLocal
{
@PersistenceContext(name="myUnit")
private EntityManager manager;


// methods signatures and implementations
}

我很难完全理解这一层的架构。

  • 这种架构常见吗?
  • 本地无状态 EJB 是否像远程无状态 EJB 一样通过实例池进行管理?
  • 即使entityAHome 和entityBHome 是远程EJB,它仍然可以工作吗?

最佳答案

严格来说,规范只说无状态 bean“通常”被池化(第 4.3.10.2 节),因此本地 bean 的行为是特定于供应商的,但实际上我相信所有主要供应商都是这样做的( for example )。

本地和远程接口(interface)几乎完全可以互换,但有额外的部署限制(即它们当然必须在本地部署),并且对本地接口(interface)的一些调用使用按引用传递语义,而远程接口(interface)始终使用按值传递 ( link )。

我看不出有什么会阻止该代码与远程接口(interface)一起工作,尽管我认为某些命名令人困惑 - session bean (@Stateless) 与实体不同,并且在 EJB 术语中“home”指的是一种工厂类,我认为这不是您的意图(?)。另外,请注意,切换到 @Remote 可能会增加性能开销,如第二个链接所述。

关于java - 本地无状态 EJB 与远程 EJB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31750835/

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