2012-03-14 41 views
1

我们有一个古老而又大的Java EE项目,由于编码数据库连接错误而导致某些地方未正确关闭/或未在catch/finally块中清理。需要帮助来搞清楚一个轻量级的Java EE框架

我们已将数据库连接池限制为100个连接。有时会发生连接保持打开并且所有100个连接都被使用,因此应用程序被挂起。我想重组这个项目,当我到达那里时我会照顾这个不好的代码,我想知道是否有任何轻量级的Java EE框架,它会自动关闭此打开的数据库连接,而无需编写conn.close()或session.close()。

也许像Django那样每个db连接在每个请求/收回周期结束时关闭。

我知道我可以使用像p6spy和IronTrack SQL这样的工具来查找未能关闭的语句,但是我对框架更感兴趣,因为这个项目没有使用任何,我试图集成这个项目与框架。

回答

0

我认为你应该通过几个不同的框架,如果你搜索它们并选择最符合你目前和将来需求的演示,演示应该可用。我个人喜欢Primefaces/Hibernate(如果你在JSF中)。

0

Java EE中的轻量级方法是使用简单的基于POJO的bean,称为EJB来执行数据库工作。

对于他们来说,在许多或所有情况下,数据库连接都是由服务器在服务器后面为您完全处理的。

例如(假设你的查询,现在是本地SQL):

@Stateless 
public class MyBean { 

    @PersistenceContext 
    private EntityManager entityManager; 

    public void doDBWork() { 
     entityManager.createNativeQuery("update foo set a = 1").executeUpdate(); 
    } 
} 

在这个例子中,当你调用doDBWork交易将自动启动,当你离开这个方法结束。连接池之间的某个连接从连接池中检索并返回给它。面对异常或并发访问,代码自动完全安全。

相关问题