我想通过JNDI连接DB2数据库,DB2的版本是9.X的,驱动是DB2JAVA.ZIP,是在我的安装目录下找到的。放在tomcat的LIB目录下。
我在一个Java文件中测试JDBC连接 ,将DB2JAVA.ZIP放在项目环境中,测试连接是可以成功的。但是在我实际项目运用中怎么都不能成功。数据库我本地的。
我现将我项目中的代码copy至此(JNDI的配置(TOMCAT)):
<Resource name="jdbc/icsdb2" auth="Container" type="javax.sql.DataSource" driverClassName="COM.ibm.db2.jdbc.app.DB2Driver"
url="jdbc:db2:IMS" username="wangj" password="123456" maxActive="20" maxIdle="10" maxWait="-1"/>
Java文件中的代码如下:
public void getDSIcs() { try { // Properties parms = new Properties(); // parms.setProperty(Context.INITIAL_CONTEXT_FACTORY, "com.ibm.websphere.naming.WsnInitialContextFactory"); // // ctx = new InitialContext(parms); // // //Lookup through the naming service to retrieve a DataSource object // dsIms = (DataSource) ctx.lookup("jdbc/icsdb2"); Context envContext = (Context)new InitialContext().lookup("java:/comp/env"); dsIms = (DataSource)envContext.lookup("jdbc/icsdb2"); //查找配置 } catch(Exception e) { System.out.println("error occur in getConnection()---" + e); } } public Connection getICSConnection() { Connection conn = null; try { if (dsIms == null) { getDSIcs(); } conn = dsIms.getConnection(); } catch(Exception e) { System.out.println("error occur in getICSConnection()---" + e); } finally { return conn; } }
所报错误如下:
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver class 'COM.ibm.db2.jdbc.app.DB2Driver'
如下是我在测试文件中测试JDBC连接成功的代码:
package com.test; import java.sql.Connection; import java.sql.DriverManager; public class Test1 { /** * @param args * @throws ClassNotFoundException */ public static void main(String[] args) throws ClassNotFoundException { Connection conn=null; try { Class.forName("COM.ibm.db2.jdbc.app.DB2Driver").newInstance(); conn = DriverManager.getConnection("jdbc:db2:IMS", "wangj", "123456"); if(conn!=null){ System.out.println("获得连接成功!"); } }catch (Exception e){ System.out.println("\n连接失败!");e.printStackTrace(); } } }
望大家能帮我出出主意,谢谢。