tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Konstantin Kolinko <knst.koli...@gmail.com>
Subject Re: Classloaders
Date Tue, 26 May 2009 20:44:03 GMT
2009/5/26 Jon Pearson <Jon.Pearson@sixnet.com>:
> I'm having some trouble getting classes loaded by a new classloader to
> be able to see classes which should have been loaded automatically from
> WEB-INF/lib. All of the documentation that I've seen so far (FAQs,
> mailing list searches, ...) describe problems that people have had using
> the standard classloader that Tomcat provides, but I have yet to see one
> dealing with dynamically loading classes from a new classloader defined
> within a webapp.
>
> More specifically, here is my problem:
>
> I am developing an application suite involving a database backend which
> feeds and is updated by server processes and a Web UI. To support
> multiple databases, database modules (JAR files) can simply be dropped
> in and loaded by each application dynamically.
>
> The problem is that when the Web UI loads the database module, that
> module is unable to actually load the JDBC driver
> (org.postgresql.Driver) which is packaged in
> WEB-INF/lib/postgresql-8.3-604.jdbc4.jar (I've checked the case of the
> path components).
>
> This is definitely related to classloaders; I tried placing the database
> module directly into my WAR file under
> WEB-INF/classes/package/name/PostgreSQLDatabale.class and it worked. But
> if I do that, I lose the modularity and easy-upgrading that I achieved
> by going with the dynamic loading of classes from JARs.
>
> I'm using java.net.URLClassLoader with the parent classloader set to the
> classloader that loaded my application classes, so it should
> theoretically be the same classloader used to load the
> postgresql-8.3-604.jdbc4.jar file.
>
> Has anyone else encountered a problem like this? Any suggestions on what
> else I should try? Thanks in advance!
>
> Jonathan P. Pearson - Software Engineer
> --------------------------------------------------

1. What tomcat version?

2. The documentation on classloaders is here:
http://tomcat.apache.org/tomcat-6.0-doc/class-loader-howto.html

3. Some JDBC drivers use native code. Those cannot be loaded from
different class loaders in the same time. Thus, they cannot be loaded
from /WEB-INF/lib, as there will be conflicts between applications,
or between several instances of the same application if it is restarted.

4. Put the jar file into WEB-INF/lib, and then restart your web application.
 (E.g., using Tomcat Manager).  Your jar library will be loaded.
http://tomcat.apache.org/tomcat-6.0-doc/html-manager-howto.html
http://tomcat.apache.org/tomcat-6.0-doc/manager-howto.html

Best regards,
Konstantin Kolinko

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Mime
View raw message