Marty,
AFAIK, those are the only two places to obtain the driver. I currently
have DB2 Connect v9 installed on my machine, so I have the driver.
So far, we are able to get the driver working from a simple Java app
compiled via the command line and an application ran in Eclipse. The
issue only occurs when we attempt to run it in Tomcat. Maybe it is a
classloader issue?
I tried refactoring the code to use the DB2 DataSource directly and
receive this error in Tomcat:
javax.security.auth.login.LoginException:
java.lang.UnsatisfiedLinkError:
COM.ibm.db2.jdbc.app.DB2Connection.SQLConnect(Ljava/lang/String;II)I
at COM.ibm.db2.jdbc.app.DB2Connection.SQLConnect(Native Method)
at COM.ibm.db2.jdbc.app.DB2Connection.connect(Unknown Source)
at COM.ibm.db2.jdbc.app.DB2Connection.<init>(Unknown Source)
at COM.ibm.db2.jdbc.app.DB2ReusableConnection.<init>(Unknown
Source)
at COM.ibm.db2.jdbc.DB2PooledConnection.getConnection(Unknown
Source)
at COM.ibm.db2.jdbc.DB2DataSource.getConnection(Unknown Source)
at COM.ibm.db2.jdbc.DB2DataSource.getConnection(Unknown Source)
at
edu.lsu.infrastructure.java_authorization.sam_authorization.JDBCAuthoriz
ationModule.getConnection(JDBCAuthorizationModule.java:176)
at
edu.lsu.infrastructure.java_authorization.sam_authorization.JDBCAuthoriz
ationModule.isUserInDirectory(JDBCAuthorizationModule.java:130)
at
edu.lsu.infrastructure.java_authorization.sam_authorization.LSULoginModu
le.login(LSULoginModule.java:138)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
a:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
Impl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
javax.security.auth.login.LoginContext.invoke(LoginContext.java:769)
at
javax.security.auth.login.LoginContext.access$000(LoginContext.java:186)
at
javax.security.auth.login.LoginContext$4.run(LoginContext.java:683)
at java.security.AccessController.doPrivileged(Native Method)
at
javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:680)
at
javax.security.auth.login.LoginContext.login(LoginContext.java:579)
at
org.apache.catalina.realm.JAASRealm.authenticate(JAASRealm.java:362)
at
org.apache.catalina.authenticator.FormAuthenticator.authenticate(FormAut
henticator.java:258)
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authenticator
Base.java:417)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java
:128)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java
:102)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.
java:109)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:2
63)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:84
4)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(
Http11Protocol.java:584)
at
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
at
javax.security.auth.login.LoginContext.invoke(LoginContext.java:872)
at
javax.security.auth.login.LoginContext.access$000(LoginContext.java:186)
at
javax.security.auth.login.LoginContext$4.run(LoginContext.java:683)
at java.security.AccessController.doPrivileged(Native Method)
at
javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:680)
at
javax.security.auth.login.LoginContext.login(LoginContext.java:579)
at
org.apache.catalina.realm.JAASRealm.authenticate(JAASRealm.java:362)
at
org.apache.catalina.authenticator.FormAuthenticator.authenticate(FormAut
henticator.java:258)
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authenticator
Base.java:417)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java
:128)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java
:102)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.
java:109)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:2
63)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:84
4)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(
Http11Protocol.java:584)
at
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
Andrew R Feller, Analyst
Subversion Administrator
University Information Systems
Louisiana State University
[EMAIL PROTECTED]
(office) 225.578.3737
-----Original Message-----
From: Martin Gainty [mailto:[EMAIL PROTECTED]
Sent: Thursday, November 15, 2007 8:40 AM
To: Tomcat Users List
Subject: Re: Tomcat DB2 JDBC issue
Hi Andrew-
Apparently the driver is only available thru WAS
http://www-1.ibm.com/support/docview.wss?uid=swg21201371
or DB2-Client
http://www-306.ibm.com/software/data/db2/support/db2_9/
Anyone else?
M--
----- Original Message -----
From: "Andrew R Feller" <[EMAIL PROTECTED]>
To: "Tomcat Users List" <[email protected]>
Sent: Thursday, November 15, 2007 8:50 AM
Subject: Tomcat DB2 JDBC issue
Database: DB2 v7 OS390
Server: DB2 Connect v9, Tomcat 6.0.14, Java 1.6
Issue: LoginModule unable to load driver; raises SQLException "No
suitable driver found"
Connection String: jdbc:db2:blah
Driver: COM.ibm.db2.jdbc.app.DB2Driver
I am developing a custom JAAS LoginModule to go against a database for
authorization information. Each web application will have a JAAS realm
declared within its Context. While developing the LoginModule, I am
halted by an issue using the DB2Java library provided by IBM in Tomcat.
Whenever the LoginModule is invoked and attempts to create a connection,
it throws a SQLException of "No suitable driver found for ...".
To test whether this was a DB2 Connect issue or not, I wrote a simply
Java program that doesn't run in Tomcat to load the driver and create a
connection to the server using the CLI settings the Tomcat code is
using. It ran successfully. I also ran my unit test in Eclipse, which
used the same exact settings, and it too performed successfully. There
is an issue with Tomcat somehow, but I am unable to determine what. The
DB2java.jar was placed within Tomcat's lib directory, which is handled
by the common loader.
Error Log:
Caused by: java.sql.SQLException: No suitable driver found for
jdbc:db2:LSU
at java.sql.DriverManager.getConnection(DriverManager.java:602)
at java.sql.DriverManager.getConnection(DriverManager.java:207)
at
edu.lsu.infrastructure.java_authorization.sam_authorization.JDBCAuthoriz
ationModule.getConnection(JDBCAuthorizationModule.java:179)
.. 23 more
at javax.security.auth.login.LoginContext.invoke(LoginContext.java:872)
at
javax.security.auth.login.LoginContext.access$000(LoginContext.java:186)
at javax.security.auth.login.LoginContext$4.run(LoginContext.java:683)
at java.security.AccessController.doPrivileged(Native Method)
at
javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:680)
at javax.security.auth.login.LoginContext.login(LoginContext.java:579)
at org.apache.catalina.realm.JAASRealm.authenticate(JAASRealm.java:362)
at
org.apache.catalina.authenticator.FormAuthenticator.authenticate(FormAut
henticator.java:258)
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authenticator
Base.java:417)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java
:128)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java
:102)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.
java:109)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:2
63)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:84
4)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(
Http11Protocol.java:584)
at
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
Thank you for any help offered as this on puzzles me,
Andrew R Feller, Analyst
Subversion Administrator
University Information Systems
Louisiana State University
[EMAIL PROTECTED]
(office) 225.578.3737
---------------------------------------------------------------------
To start a new topic, e-mail: [email protected]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]