GeeCON Prague 2014*
The moose likes General Computing and the fly likes JDBC Driver detection error when running as Windows Service Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


JavaRanch » Java Forums » Engineering » General Computing
Bookmark "JDBC Driver detection error when running as Windows Service" Watch "JDBC Driver detection error when running as Windows Service" New topic
Author

JDBC Driver detection error when running as Windows Service

Abhijit Basu
Greenhorn

Joined: Mar 02, 2005
Posts: 1
Let me describe the setup first. I am uisng JDK 1.3. The classes12.jar (JDBC driver) has been placed in C:\jdk1.3\jre\lib\ext folder, so I have not explicitly added the jar to the classpath. My test program can make a JDBC connection fine from this windows machine to Oracle. Now, I create a jar of this code and the windows service basically loads the jar up when Windows starts. When run in this manner, I get ClassNotFoundException for "oracle.jdbc.driver.OracleDriver". However, I have a bat file that starts the jar up the same way (java -jar ReportServer.jar) and that seems to be able to make JDBC connections just fine. Below is a code excerpt being used for the connection:

......
DriverManager.registerDriver((Driver)Class.forName("oracle.jdbc.driver.OracleDriver").newInstance());
//Get a Connection to the database
myConn = DriverManager.getConnection(dbUrl, rptUsername, rptPassword);
.........

I am catching all the required exceptions etc.

Also, here's how the environment variables are set:
JAVA_HOME=C:\jdk1.3
Path=D:\apache;C:\jdk1.3\bin;D:\Oracle\Ora81\bin;.............
CLASSPATH=.;D:\Oracle\Ora81\bin;C:\jdk1.3;.....................

Any ideas? I dont know what I am doing wrong. This needs to run as a windows service. Thanks!
Jeanne Boyarsky
author & internet detective
Marshal

Joined: May 26, 2003
Posts: 30586
    
154

Abhijit,
Welcome to JavaRanch!

While this post does relate to JDBC, I'm moving it to our General Computing forum because it is more about classpaths on window services (since the batch file works)


[Blog] [JavaRanch FAQ] [How To Ask Questions The Smart Way] [Book Promos]
Blogging on Certs: SCEA Part 1, Part 2 & 3, Core Spring 3, OCAJP, OCPJP beta, TOGAF part 1 and part 2
David O'Meara
Rancher

Joined: Mar 06, 2001
Posts: 13459

Firstly

is not correct and can cause the Driver to be registered twice. This is only a problem if you try to remove Drivers (whcih I've never seen anyone do), but this is the preferred mechanism:


While it doesn't look like it does anything, the ClassLoader loads the Driver and as the Driver loads it is required to register itself with the DriverManager.

Have you tried taking the classes12.jar out of the lib/ext directory and getting the batch file to include it? There is a strange security ussue relating to the way Drivers get loaded, but I'm trying to remeber the ways to recreate the problem and how to solve it. the 'lib/ext' directory doesn't feel like the right place for it.

Sorry for being so vague :}

Dave
 
GeeCON Prague 2014
 
subject: JDBC Driver detection error when running as Windows Service