gpt4 book ai didi

java - DI 框架可以在 EJB 应用程序中提供单例范围吗? (不同的类加载器用法)?

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

假设我想使用 EJB 容器,但我不知道容器实现如何使用类加载器。

现在,我希望与我的自定义数据结构拥有内存共享状态(因此没有 HSQLDB 等)。在此应用程序中,EJB 规范恰好是 < EJB 3.1,并且我无法使用 EJB 单例服务。

如果我使用 Spring、Google Guice 等 DI 框架,它们能够提供单例注入(inject)吗?如果是这样,他们如何提供呢?

最佳答案

实际上,这可能(可能)是可能的,因为大多数应用程序服务器并不是特别严格,并且允许您稍微“扩展”J2EE 规范。

理论上,您不能保证 J2EE 应用程序中存在单例。一个问题是您的应用程序可能部署在集群环境中的多个虚拟机上,但即使是 EJB 单例(在 EJB 3.1 中)也会为每个虚拟机提供一个单例。另一个可能的问题是,即使在一个虚拟机上运行,​​您的应用程序也可能会因状态而暂停,然后在不同的虚拟机中重新启动,例如退回服务器后。在这种情况下,单例模式也会被破坏。

严格遵循J2EE,您也不允许在代码中使用synchronized 语句或其他线程锁。这可能导致无法保证共享数据结构的完整性。但是,如果您将部署限制在一台虚拟机上,那么与在非 Java EE 环境中运行相同的代码相比,您应该不会遇到任何其他问题。

关于java - DI 框架可以在 EJB 应用程序中提供单例范围吗? (不同的类加载器用法)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3429294/

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