由于没有发现潜在的递归导致MySQL链接数溢出:MySQLNonTransientConnectionException: Data source rejected establishment of connection, message from server: "Too many connec

DAOProxy的代码:下面代码中红色高亮的就是出问题的地方,DAOFactory中会构造一个PersonDAOProxy,调用listPersons或者addPerson显然会导致递归,从而导致MySQL链接数溢出!将高亮处的代码修改为:dao.listPersons()、dao.addPerson(person)即可!

public class PersonDAOProxy implements IPersonDAO {
    
    private DatabaseConnection conn = null;
    private IPersonDAO dao = null;
    
    public PersonDAOProxy() throws NamingException, SQLException {
        conn = DatabaseConnection.newInstance();
        dao = new PersonDAOImpl(conn.getConnection());
    }
    
    @Override
    public List<Person> listPersons() throws SQLException {
        List<Person> persons = null;
        try {
            persons = DAOFactory.getIPersonDAOInstance().listPersons();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            conn.close();
        }
        return persons;
    }
    
    @Override
    public void addPerson(Person person) throws SQLException {
        try {
            DAOFactory.getIPersonDAOInstance().addPerson(person);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            conn.close();
        }
    }
    
}
原文地址:https://www.cnblogs.com/qrlozte/p/3621140.html