1

在使用 EJB3 无状态会话 bean 时,哪里是获得注入 DataSource 连接的最佳位置?我有调用 ds.getConnection() 的方法,但是每次都会发生这种情况,因此为每次调用打开和关闭连接并不是很经济或智能。

通常最好将数据源连接的访问​​和关闭放在托管生命周期方法之一中吗?我想确保尽可能以最低成本访问数据源,同时确保在不再需要时关闭连接,这样它就不仅仅是挂起。

谢谢!!

4

1 回答 1

1

无状态会话 Bean 的生命周期

因为无状态会话 bean 永远不会被钝化,所以它的生命周期只有两个阶段:不存在和准备好调用业务方法。图 22-4 说明了无状态会话 bean 的各个阶段。

显示无状态会话 bean 生命周期的图表。

EJB 容器通常创建和维护一个无状态会话 bean 池,开始无状态会话 bean 的生命周期。容器执行任何依赖注入,然后调用注解 @PostConstruct 的方法(如果存在)。bean 现在已准备好让客户端调用其业务方法。

在生命周期结束时,EJB 容器调用注解为 @PreDestroy 的方法(如果存在)。然后 bean 的实例就可以进行垃圾回收了。

来源:http ://docs.oracle.com/javaee/6/tutorial/doc/giplj.html

在 EJB 中创建一个字段来存储在 @PostConstruct 处获得的 Connection 实例,然后在 @PreDestroy 中释放它

在这里,这个http://theopentutorials.com/tutorials/java-ee/ejb3/session-beans/slsb/stateless-session-beans-lifecycle-callback-methods/的书面代码示例

于 2013-10-31T17:57:22.280 回答