2013-10-31 36 views
1

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

通常最好是将访问和关闭数据源连接置于其中一个托管生命周期方法中?我希望确保尽可能少的访问数据源,同时确保连接在不再需要时关闭,因此不仅仅是开放。

谢谢!

回答

1

的生命周期无状态会话bean

因为无状态会话bean永远不会钝化,它的生命周期 只有两个阶段:不存在和准备的 商业方法调用。图22-4展示了一个无状态的会话bean阶段。

Diagram showing the lifecycle of a stateless session bean.

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

在生命周期结束时,EJB容器调用注释@PreDestroy的方法 (如果存在)。然后,该bean的实例准备好用于垃圾收集 。

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

在EJB存储连接实例创建一个域,你得到的@PostConstruct,然后释放了@PreDestroy

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

+0

太棒了!非常感谢:) – user2920226

+0

如果这解决了你的问题,你会接受这个答案作为解决方案吗? –