我们有一个Java servlet充当Web应用程序的调度程序。对于每个请求,创建数据库连接,然后在请求结束时提交/回滚,具体取决于操作是否成功。它看起来像:
public class WebDispatcher extends HttpServlet {
protected void processRequest(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
Connection conn = null;
try {
// Create connection
} catch(.....) {
} finally {
// Commit / Rollback connection
}
}
}
出现异常时会出现问题。例如,如果他们无法访问某个操作,则调度员必须重定向它们。它通过使用请求调度程序来完成此任务。
} catch(RoleAuthorizationException rae) {
request.getRequestDispatcher(.....).forward(request, response);
}
我原以为'最后'会被召唤,但在这种情况下似乎并没有。每次例外,我们最终都会丢失池中的连接。作为一种解决方法,我们正在关闭每个例外的连接,但为什么最终没有被调用?
答案 0 :(得分:1)