Code Comments

Programming Forum and web based access to our favorite programming groups.
For Programmers: Free Programming Magazines | New: Database administration forum
Registration is free! Edit your profileCalendarFind other membersFrequently Asked QuestionsSearch -> 
Post New Thread











Thread
Author

Accessing external jar from servlet
I'm trying to learn servlets, and am stuck getting the servlet
to use JDBC (specifically, Sybase's JConnect), which I think is
due to my not understanding how to provide the servlet with
access to the JDBC's jar file.  I'd like to provide a small,
self-contained example, but I'm not sure that's possible here,
so let me just describe what I'm trying to do.

First, note the following:
-- I can get basic servlets running (with Tomcat) just fine.
-- I can use JDBC just fine with my Java applications.

Where I'm stumped is with this concept: My jdbc classes are in
C:\Java\jConnect-5_5\classes\jconn2.jar

From an _application_ I just import the right classes:
import com.sybase.jdbc2.jdbc.*;

and do the usual Class.forName to load the driver:
Class.forName("com.sybase.jdbc2.jdbc.SybDriver");

and then I can tell the jvm where the jar file is:
java -cp .;C:\Java\jConnect-5_5\classes\jconn2.jar mypackage.MyApp

and all is well.  But with a servlet, how do I provide that
connection between the Java code and the jar file?  When I invoke
my servlet, Tomcat's log contains the following:
java.lang.ClassNotFoundException: com.sybase.jdbc2.jdbc.SybDriver
(followed by a full stack trace) afterward.  The stack trace
indicates it choked during the Class.forName(), i.e., when trying
to load the driver.

The obvious thing (to me) seemed to be the CLASSPATH env variable,
but pointing CLASSPATH to the jar file didn't make any difference.
I tried checking all the docs I could find, but didn't find anything
that helped me (which I assume is a case of information overload on
my part rather than the information not being out there).  Any
pointers would be appreciated.

Thanks.

Report this thread to moderator Post Follow-up to this message
Old Post
Larry Coon
12-28-04 08:57 AM


Re: Accessing external jar from servlet
You are right, it's the classpath, but add the jar file to the system
classpath variable doesn't help Tomcat to find the library, because it
uses a different path to search libraries.

Copy the JDBC jar file to your Tomcat server's webapps/WEB-INF/lib
directory.


Report this thread to moderator Post Follow-up to this message
Old Post
Java Lover
12-28-04 08:57 AM


Re: Accessing external jar from servlet
lmcoon@nospam_cox.net said:
>I'm trying to learn servlets, and am stuck getting the servlet
>to use JDBC (specifically, Sybase's JConnect), which I think is
>due to my not understanding how to provide the servlet with
>access to the JDBC's jar file.

Servlet containers (or Tomcat at least) pretty much disregard the
classpath.

One way (the fast and simple way) to provide external jar files
to a servlet application is to place the jar into WEB-INF/lib/
directory within the web application. However, if you're running
several independent applications in a single container, this way
you'll soon get several copies of the jar file on disk and in
memory.

The other way is dependent on your servlet container -- to find
out how it supports sharing jar files across several applications
(so, whether there's a place where you can drop jar files intended
to be accessible by all applications, or whether there's a way to
add jar files to the "internal classpath" of the servlet container).

A way specific to database connections would be to use the connection
pooling mechanisms provided by the servlet container -- and again,
configuring this depends on your container.
--
Wolf  a.k.a.  Juha Laiho     Espoo, Finland
(GC 3.0) GIT d- s+: a C++ ULSH++++$ P++@ L+++ E- W+$@ N++ !K w !O !M V
PS(+) PE Y+ PGP(+) t- 5 !X R !tv b+ !DI D G e+ h---- r+++ y++++
"...cancel my subscription to the resurrection!" (Jim Morrison)

Report this thread to moderator Post Follow-up to this message
Old Post
Juha Laiho
12-28-04 09:00 PM


Re: Accessing external jar from servlet
"Java Lover" <ilovejava@gmail.com> wrote in message
news:1104217506.217787.239010@f14g2000cwb.googlegroups.com...
> You are right, it's the classpath, but add the jar file to the system
> classpath variable doesn't help Tomcat to find the library, because it
> uses a different path to search libraries.
>
> Copy the JDBC jar file to your Tomcat server's webapps/WEB-INF/lib
> directory.
>
Close, but that directory doesn't exist. And please quote the relevant parts
of the post to which you are replying.

OP: Each J2EE application has a WEB-INF directory which is invisible to the
client. Within this directory are, among other things, a classes directory
and a lib directory. The classes directory is the root of the classpath
where all your personally written classes should go. Since you mentioned
that you can run servlets, I'll assume you're familiar with this directory.
The lib directory is where JARs go. All JARs in WEB-INF/lib are added to the
application's classpath. So you can put your JDBC driver in your
application's WEB-INF/lib to gain access to it. If you'll be writing several
webapps that require the same JDBC driver, you can make it available to all
webapps rather than putting a separate copy in each one. This is what the
$CATALINE_BASE/shared/lib directory is for. Put any JARs here that you want
available to multiple apps.



Report this thread to moderator Post Follow-up to this message
Old Post
Ryan Stewart
12-28-04 09:00 PM


Sponsored Links




Last Thread Next Thread Next
Search this forum -> 
Post New Thread

Java Help archive

Show a Printable Version Send to friend Email This Page to Someone! subscribe to this thread Receive updates to this thread
Computer Consultants
Programming Jobs
Visual Basic Controls
SQL Server Programming
Webservices
Java Security
Visual Studio
C# Programming
Visual J++
Software engineering
Open source Software
Perl Programming
PHP Programming
ASP Programming
ASP .NET Programming
Visual Basic Programming
Windows Scripting Host
Java Programming
Java Help
Java Beans
VBScript
Cobol
MAC Applications
Unix Programming
Forum Jump:
All times are GMT. The time now is 08:22 AM.

 
Free MCSE Braindumps | Real Estate Topics

Programming forum archive

Copyrights CodeComments.com 2004 - 2006

Powered by vBulletin Copyright 2000-2006 Jelsoft Enterprises Limited.