public void fireStatementErrorOccurred(PreparedStatement ps, SQLException error) { Set mlCopy; synchronized (this) { mlCopy = (Set) mlisteners.clone(); } StatementEvent evt = new StatementEvent(source, ps, error); for (Iterator i = mlCopy.iterator(); i.hasNext(); ) { StatementEventListener cl = (StatementEventListener) i.next(); cl.statementErrorOccurred(evt); } }