gpt4 book ai didi

jakarta-ee - CDI 容器如何适应 Java EE 服务器的 EJB/Web 容器?

转载 作者:行者123 更新时间:2023-12-04 19:34:54 26 4
gpt4 key购买 nike

Java EE 服务器具有不同的容器,如 EJB 或 Web 容器:
enter image description here

但是,我发现有关如何集成 CDI 组件的不同信息。文学中some谈到 CDI 容器(“CDI 容器为您自动管理范围内的所有 bean”),但其他人将其定义为 Java EE 容器提供的上下文服务。在 stackoverflow 上,甚至还有一个名为“IOC-Container”的标签。那么,如果它是一个容器,它是 EJB/Web 容器的容器部分/内部吗?

因此,如果我绘制 Java EE 服务器及其组件和容器的图片(如上图所示),CDI 是如何适应的?它有自己的容器“矩形”还是某些 EJB/Web 容器的一部分?你会如何在建筑设计中绘制它,你会如何解释/描述它?

最佳答案

CDI 有一个单独的容器 .在您的图片中,它很可能是 EE 服务器端的另一个单独的矩形。谈到 EE 环境,CDI 由 EE 容器(通常是 RI - Weld)提供,因此容器将在(第一次)应用程序部署时为您启动它。

话虽如此, CDI 容器是每个 EE 服务器一个 .即使您部署了几个都使用 CDI 的 WAR 应用程序,仍然会有一个 CDI 容器。请注意,在 SE 环境中(Weld SE 允许您在 SE 环境中使用 CDI),如果您愿意,您可以拥有多个这样的容器。

至于与 EJB 和 JSF 等其他 EE 内容的集成。例如,它们允许您使用 @Stateless@ViewScoped哪些是基于 CDI 的功能。因此,他们必须“以某种方式”与 CDI 集成。现在这个魔法是在 EE 容器内完成的,通常是通过提供者的(焊接)SPI。例如,容器负责处理 EJB bean,然后将它们(通过 SPI)移交给 Weld,然后 Weld 可以将它们作为 CDI bean 接管,允许您 @Inject进入 @Stateless bean 。显然,以上是对实际发生的情况的简化。

关于jakarta-ee - CDI 容器如何适应 Java EE 服务器的 EJB/Web 容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41013650/

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