在使用 EJB3 无状态会话 bean 时,哪里是获得注入 DataSource 连接的最佳位置?我有调用 ds.getConnection() 的方法,但是每次都会发生这种情况,因此为每次调用打开和关闭连接并不是很经济或智能。
通常最好将数据源连接的访问和关闭放在托管生命周期方法之一中吗?我想确保尽可能以最低成本访问数据源,同时确保在不再需要时关闭连接,这样它就不仅仅是挂起。
谢谢!!
在使用 EJB3 无状态会话 bean 时,哪里是获得注入 DataSource 连接的最佳位置?我有调用 ds.getConnection() 的方法,但是每次都会发生这种情况,因此为每次调用打开和关闭连接并不是很经济或智能。
通常最好将数据源连接的访问和关闭放在托管生命周期方法之一中吗?我想确保尽可能以最低成本访问数据源,同时确保在不再需要时关闭连接,这样它就不仅仅是挂起。
谢谢!!
无状态会话 Bean 的生命周期
因为无状态会话 bean 永远不会被钝化,所以它的生命周期只有两个阶段:不存在和准备好调用业务方法。图 22-4 说明了无状态会话 bean 的各个阶段。
EJB 容器通常创建和维护一个无状态会话 bean 池,开始无状态会话 bean 的生命周期。容器执行任何依赖注入,然后调用注解 @PostConstruct 的方法(如果存在)。bean 现在已准备好让客户端调用其业务方法。
在生命周期结束时,EJB 容器调用注解为 @PreDestroy 的方法(如果存在)。然后 bean 的实例就可以进行垃圾回收了。
在 EJB 中创建一个字段来存储在 @PostConstruct 处获得的 Connection 实例,然后在 @PreDestroy 中释放它