Java tomcat中连接池的理想结构

Java tomcat中连接池的理想结构,java,jakarta-ee,servlets,tomcat7,Java,Jakarta Ee,Servlets,Tomcat7,看看我在下面提出的问题,每当我想使用连接池访问我的数据库时,总是需要调用servlet中的Init方法来检索连接,对我来说这是一个问题,我已经在页面上回顾了几个问题 我的想法是调用我的第一个servlet init,然后连接发送会话对数据库进行更改,而不必调用init方法,但我的问题是,我应该在哪里关闭连接 我试图找到一个理想的连接池结构来解决这个问题 我的init方法包含以下内容 public void init(ServletConfig config) throws ServletExce

看看我在下面提出的问题,每当我想使用连接池访问我的数据库时,总是需要调用servlet中的Init方法来检索连接,对我来说这是一个问题,我已经在页面上回顾了几个问题

我的想法是调用我的第一个servlet init,然后连接发送会话对数据库进行更改,而不必调用init方法,但我的问题是,我应该在哪里关闭连接

我试图找到一个理想的连接池结构来解决这个问题

我的init方法包含以下内容

public void init(ServletConfig config) throws ServletException {
    Context ctx;
    try {
        ctx = new InitialContext();
        sourceDb = (DataSource) ctx.lookup("java:comp/env/jdbc/Practica5");

    } catch (NamingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
我将参加以下会议:

synchronized (sourceDb) {
    con = sourceDb.getConnection();
}
if (con == null) {
    throw new ServletException("Problemas con la conexion");
}
request.getSession().setAttribute("con",con);

在会话中共享数据库连接在任何时候都会很麻烦。。。 我觉得在执行过程中可能会导致序列化问题

如果要求在会话中使用单个连接对象,那么最好将连接对象返回到池中,并在另一个servlet中再次获取它


在这种情况下,我们要确保通过数据源在servlet之间维护连接对象

,然后必须将连接对象放置在每个servlet中。init方法?将有一种方法将它们分开?不需要这样做。。。在一个init()方法中初始化并使该类首先加载。。。它可以工作…那么当我第一次初始化servlet init时,我就可以为以下servlet使用我的connecion了?就像获得到其他servlet的连接一样,应该设置第一个servlet吗?