Thanks for all the replies I got from everyone.  Some extra bits of
information. I'm not using a connection pool in one application but I am
using a pool in the other (Jive www.jivesoftware.com).  I'm gonna try out
the different scenrios and see if anything else works.  I'll report my
findings when I i figure out what does/doesn't work.

Should i be using DriverManager.getDriver(url) instead of
Class.forName(driver) then DriverManager.getConnection()

Thanks

Brian


----- Original Message -----
From: "Craig R. McClanahan" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Thursday, October 04, 2001 1:39 PM
Subject: RE: Driver fails to load on two webapps


>
>
> On Thu, 4 Oct 2001, Brett Knights wrote:
>
> > Date: Thu, 4 Oct 2001 09:57:08 -0700
> > From: Brett Knights <[EMAIL PROTECTED]>
> > Reply-To: [EMAIL PROTECTED]
> > To: [EMAIL PROTECTED]
> > Subject: RE: Driver fails to load on two webapps
> >
> > >
> > > Might i try moving the jar to WEB-INF\classes instead of WEB-INF\lib ?
> >
> > Wouldn't work. Jars are only loaded from the lib directory.
> >
> >
> > As you did I ended up with my driver jar file in a common directory
> > (lib/common for tc3.3)
> > I have a connection pool manager (bitmechanic) and I keep its jar in the
> > WEB-INF/lib file for my web apps.
> >
> > Everything seems to work properly.
> >
> > It's odd that the everything-in-its-webapp-lib-directory approach
doesn't
> > work though.
> > The DriverManager is supposed to be ClassLoader aware. What happens when
you
> > call DriverManager.getDriver(url) from a simple servlet in each webapp?
What
> > about calling DriverManager.registerDriver() in a load-on-startup
servlet in
> > each webapp?
> >
>
> When you call DriverManager.getDriver(), the code (at least in 1.3.1 - I
> assume it's the same elsewhere) tries to load the driver class itself from
> the classloader of the *caller* of the getDriver() method.  In your
> scenario, it would be called by the servlet, and therefore load the driver
> >from the webapp class loader (if that's where it was).
>
> However, if you're using a connection pool, you have no guarantees that
> the pool implementation uses DriverManager.getDriver().  In particular,
> the following scenario will fail:
>
> * Connection pool uses Class.forName() to load the driver class
>   (i.e. from the class loader that the *pool* is loaded from).
>
> * Connection pool installed in the shared library directory.
>
> * JDBC driver installed in the /WEB-INF/lib directory.
>
> You'd need to investigate the methodology of your connection pool to see
> if this is what is happening to you.  However, the general rule of "put
> the connection pool and the JDBC driver in the same place" should take
> care of nearly every possible class loading difficulty.
>
> > hth
> >
>
> Craig McClanahan
>
>
>

Reply via email to