回调、定时服务和授权:深入理解Java EE中的关键组件
1. 会话Bean生命周期
Java EE中的会话Bean是构建企业级应用程序的核心组件之一。根据其功能和设计模式的不同,会话Bean分为三种主要类型:无状态(Stateless)、有状态(Stateful)和单例(Singleton)。每种类型的Bean都有其独特的生命周期和特点,了解这些有助于更好地设计和优化应用程序。
1.1 无状态和单例Bean的生命周期
无状态和单例Bean的共同特点是它们不维护与特定客户端的对话状态。这两种类型的Bean允许任何客户端访问——无状态Bean按实例进行访问,而单例Bean则允许并发访问单一实例。它们共享相同的生命周期,如图1所示,并描述如下:
- 当客户端请求Bean的引用时(通过依赖注入或JNDI查找),容器创建一个新的会话Bean实例。
- 如果新创建的实例通过注解(如
@Inject
、@Resource
、@EJB
、@PersistenceContext
等)或部署描述符使用依赖注入,容器将注入所有必需的资源。 - 如果实例有一个被
@PostConstruct
注解的方法,容器将调用它。 - 豆子实例处理客户端发起的调用,并保持在就绪模式以处理未来的调用。无状态的豆子实例保持在就绪模式,直到容器释放池中的空间。单例豆子实例保持在就绪模式,直到容器关闭。
- 容器不再需要该实例时,它会调用带有