EBJ3会话bean中的DataSource.getConnection()

时间:2013-10-31 16:26:01

标签: java datasource ejb-3.0

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

通常最好将访问和关闭数据源连接放在其中一个托管生命周期方法中吗?我想确保尽可能低成本地访问数据源,同时确保在不再需要时关闭连接,这样它就不会悬空。

谢谢!

1 个答案:

答案 0 :(得分:1)

  

无状态会话Bean的生命周期

     

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

     

Diagram showing the lifecycle of a stateless session bean.

     

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

     

在生命周期结束时,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/

的代码示例