Process hangs on exiting
Hi all,
Perhaps this problem is well known and solved but I cannot
quite figure out what is going on so any help would
be much appreciated.
I hava a very small home application than connects to Oracle XE.
At this point in consists of only one loop in my main method:
public static void main(String[] args) {
Initializer initializer = new Initializer();
try {
Set<Conference> conferences = initializer.getConferences();
for (Iterator<Conference> i = conferences.iterator(); i.hasNext();)
{
Conference conference = i.next();
conference.storeInDatabase();
}
} catch (IOException e) {
System.err.println("Problem reading conferences");
e.printStackTrace();
} catch (SQLException e) {
System.err.println("DB problem");
e.printStackTrace();
}
}
This is the loop in the main method, The storeInDatabase method looks like
this
public void storeInDatabase() throws SQLException {
Connection con = DBConnectionManager.getConnection();
PreparedStatement pstmt = con.prepareStatement("INSERT INTO CONFERENCES
(ID, NAME, TIER, REGION) VALUES (SEQ_CONFERENCES.nextval, ?, ?, (SELECT ID
FROM REGIONS WHERE NAME = ?))");
pstmt.setString(1, name);
pstmt.setInt(2, tier);
pstmt.setString(3, region);
pstmt.executeUpdate();
pstmt.close();
con.close();
}
There is connection pooling that is being done behind the scenes - I am
using
the Sun example from their own site
http://java.sun.com/developer/onlineTraining/Programming/JDCBook/conpool.html
so the getConnection() method actually returns a connection from the
JDCConnectionPool and close on connection (which is
actually JDCConnection) invokes returnConnection().
The problem is that the whole code works, all inserts are executed
properly (I have checked this by debugging and inserting
System.out.println() statements) but the
main process never returns in appears to hang
on the closing curly brace } of the main method.
I am using Netbeans 6.5 - I need to click manually on
Cancel Process in order to stop it.
I have discovered that when I add
System.exit(1)
at the end of my main method the process terminated normally.
Any ideas?
Konrad