you would need to listen for context destroyed, and cast the datasource
to call close() on it
Filip
On 08/05/2009 10:43 AM, Kirill Ilyukhin wrote:
I use database connection pool which is described in webapp's
META-INF/context.html:
<Context>
<Resource
auth="Container"
scope="Unshareable"
name="jdbc/myDS"
type="javax.sql.DataSource"
driverClassName="org.postgresql.Driver"
url="jdbc:postgresql://server/db"
...
/>
</Context>
and in WEB-INF/web.xml:
<resource-ref>
<res-ref-name>jdbc/myDS</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
Then I do the following in my code:
InitialContext ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/myDS");
...
Connection conn;
try {
conn = ds.getConnection();
...
} finally {
conn.close();
}
The problem is that after I stop the webapp the connections to databae
server are staying alive. And when I start the webapp again I see new
connections are created.
As far as I understood from Tomcat bugs discussion this is the
expected behaviour. If so, am I supposed to close the DataSource in my
code? Surely I can do this in contextDestroyed(...) method of my
ServletContextListener, but
1. DataSource has no exposed close() method and the only way to close
it is calling close() through reflection. Looks like dirty hack...
2. The connection pool has been created somewhere inside Tomcat. I
don't think it's correct to close it from my code.
What is the right way to close such a database connection pool? Is
there a way to make Tomcat close the pool when the context is being
destroyed?
Thanks in advance,
Kirill.
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org