El problema está en la forma en que obtienes datos en getStuff()
. Cada vez que visita getStuff()
obtienes un nuevo ResultSet
pero no lo cierras.
Esto viola la expectativa de la Statement
clase (ver aquí - http://docs. oracle.com/javase/7/docs/api/java/sql/Statement.html
):
De forma predeterminada, solo se puede abrir un objeto ResultSet por objeto Statement al mismo tiempo. Por lo tanto, si la lectura de un objeto ResultSet se intercala con la lectura de otro, cada uno debe haber sido generado por diferentes objetos Statement. Todos los métodos de ejecución en la interfaz de declaración cierran implícitamente el objeto ResultSet actual de una declaración si existe uno abierto.
Lo que empeora aún más las cosas son los rs
del código de llamada. También se deriva de la statement
campo pero no está cerrado.
En pocas palabras:tiene varios ResultSet
perteneciente a la misma Statement
objeto abierto al mismo tiempo.