【问题标题】:DataSource.getConnection() in EBJ3 session beanEBJ3 会话 bean 中的 DataSource.getConnection()
【发布时间】:2013-11-01 01:57:22
【问题描述】:

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

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

谢谢!!

【问题讨论】:

    标签: java datasource ejb-3.0


    【解决方案1】:

    无状态会话 Bean 的生命周期

    因为无状态会话 bean 永远不会被钝化,所以它的生命周期 只有两个阶段:不存在和准备好调用 商业方法。图 22-4 说明了无状态的阶段 会话 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/的编写代码示例

    【讨论】:

    • 太棒了!非常感谢:)
    • 如果这解决了你的问题,你会接受这个答案作为解决方案吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    相关资源
    最近更新 更多