Hi all.
I'm a bit confused here. I'm using Tomcat JSP/Servlet engine. I have a database in PostgreSQL, which holds a table
describingan n-tree structure (hierarchy). I would like my JSP page to able to display (if parameter "print" is
present)a complete sub-tree of a given node. This is a simple recursion. What I'm trying to do is make our coroporate
E-Mailaddress book, so I have organizational units and users.
Without recursion everything works fine, all the direct subnodes are displayed. When I use recusrion to include all
subnodes,I get strange errors.
First, it was killing the response in the middile of a table, in the middle of a row. Now it dies with
"NullPointerException:next()". In other words, in one of the "ResultSet.next()" methods, it runs into a non existant
ResultSet.
I have tried putting a "breakpoint" (throwing a ServletException) on all lines of my JSP page. When there is a
"breakpoint"I do not run into a NullPointerException. When I remove it, I have exception.
My conclusion was that I get the error AFTER my JSP page starts emerging from the recursion (if it was inside
recursion,it would have been stopped by the "breakpoint"). So, after a page calls itself once, the "insider" does it's
thingand then exits and releases control to it's caller, the the exception occurs.
I must admit that JSP page closes it's JDBC objects, I thought it would be OK, since the page creates them.
This is the flow of events:
OUDisplay.jsp [instance 1]:
----------------------------
DriverManager.getConnection()
Connection.createStatement()
Statement.executeQuery()
while( ResultSet.next() ) {
...
<jsp.include page="OUDisplay.jsp" />
OUDisplay.jsp [instance 2]:
----------------------------
DriverManager.getConnection()
Connection.createStatement()
Statement.executeQuery()
while( ResultSet.next() ) {
...
}
ResultSet.close()
Statement.close()
Connection.close()
--------------[instance 2]-
}
ResultSet.close()
Statement.close()
Connection.close()
--------------[instance 1]-
The problem occurs inside the outer "next() {...}", which leads me to believe that Some objects in the "instance 1" get
screwedup, but I don't know how.
Any insight?
Nix.