由于没有发现潜在的递归导致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();

        }

    }

    

}

 

你可能感兴趣的:(Connection)