riporto il codice della servlet:

le righe commentate con "//aggiunto dopo" sono le prove che ho fatto

codice:
import java.io.*;
import java.net.*;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Vector;

import javax.servlet.*;
import javax.servlet.http.*;


public class ConnectionDB extends HttpServlet {
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();        

           [...]

        
        String sqlSelect = "select * from ....";
        
        try {
            Class.forName("org.hsqldb.jdbcDriver");
            Connection conn = DriverManager.getConnection("jdbc:hsqldb:C:/db/test", "sa", "");
            Statement stm = conn.createStatement();
            ResultSet rs = stm.executeQuery(sqlSelect);
                while(rs.next()) {
                     [...]
                }
            } 
            
            
            rs = null;     //aggiunto dopo
            stm.close();
            stm = null;    //aggiunto dopo
            conn.commit(); //aggiunto dopo
            conn.close();
            conn = null;   //aggiunto dopo
               
        }
        catch(Exception e){
            System.err.println("Errore: " + e.getMessage());        
        }

[...]       
        out.close();
}