wj7222141 2010-12-28 16:17
浏览 649
已采纳

JNDI连接DB2 (tomcat)

 我想通过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();    }   
        }

}

 

望大家能帮我出出主意,谢谢。

  • 写回答

3条回答 默认 最新

  • dyccsxg 2010-12-28 17:56
    关注

    换一下 jar 包试试

    driver : com.ibm.db2.jcc.DB2Driver
    db2jcc_license_cu.jar
    db2jcc.jar

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!