一尘不染

Tomcat + ActiveJDBC:使用Servlet过滤器打开/关闭连接?

tomcat

我的Web应用程序使用ActiveJDBC。这个ORM框架要求使用每个新线程打开新的数据库连接(当然,在线程完成时关闭它)。我想知道实现这一目标的最佳方法是使用Web筛选器。

如果是这种情况,我应该在哪里打电话Base.open()?选项是init()doFilter()。另外,如果我计划调用Base.close()in
destroy(),那么我需要知道确实destroy()总是在线程终止时调用它,无论它是正常的还是异常的。

编辑:在阅读了有关servlet过滤器的信息之后,我现在认为正确的处理方法是在以下位置打开和关闭连接doFilter()

public void doFilter(final ServletRequest request, final ServletResponse response, FilterChain chain) throws IOException, ServletException { 
  Base.open();
  chain.doFilter(request,wrapper);
  Base.close(); 
}

这是正确的方法吗?


阅读 312

收藏
2020-06-16

共1个答案

一尘不染

是的,这是在Web环境中打开和关闭ActiveJDBC连接的正确方法。

除此之外,这是管理异常的正确位置。例如,您可能要管理以下事务:

try{
  Base.openTransaction(); 
  chain.doFilter(request,wrapper);
  Base.commitTransaction(); 
}catch(Exception e){
  // log exception
  Base.rollbackTransaction();
}finally{
  Base.close();
}

最终,为什么不让ActiveWeb旋转,而不是与Servlet打交道?在此处查看更多信息:http
:
//javalite.io/database_configuration

2020-06-16