为啥 DB2 Type 4 JDBC Driver 正在寻找本机库 db2jcct2?

Posted

技术标签:

【中文标题】为啥 DB2 Type 4 JDBC Driver 正在寻找本机库 db2jcct2?【英文标题】:Why is DB2 Type 4 JDBC Driver looking for native library db2jcct2?为什么 DB2 Type 4 JDBC Driver 正在寻找本机库 db2jcct2? 【发布时间】:2012-01-09 15:32:53 【问题描述】:

我认为 Type 4 JDBC 驱动程序是纯 Java 并且不需要本地库。

当我将 db2jcc4.jar 放入打包为 .war 文件的 Tomcat 应用程序的 WEB-INF/lib 目录中时,尝试使用该应用程序时出现以下错误:Got SQLException: com.ibm.db2.jcc.am.SqlException: [jcc][10389][12245][4.12.55] Failure in loading native library db2jcct2, java.lang.UnsatisfiedLinkError

相关应用代码如下,由于清单最后一行而引发异常:

        import com.ibm.db2.jcc.DB2SimpleDataSource;

        // ...

        DB2SimpleDataSource main_db2_data_source = new DB2SimpleDataSource();
        main_db2_data_source.setUser(main_database_user);
        main_db2_data_source.setPassword(main_database_password);
        main_db2_data_source.setServerName(main_database_host);
        try 
          Integer main_database_port_integer = Integer.parseInt(main_database_port);
          main_db2_data_source.setPortNumber(main_database_port_integer);
         catch (NumberFormatException exception) 
          throw new WebException("...");
        
        Connection main_connection = null;
        try 
          main_connection = main_db2_data_source.getConnection();

【问题讨论】:

【参考方案1】:

我怀疑问题在于您没有告诉它使用类型 4 驱动程序 - 我相信同一个 jar 文件包含类型 4 和类型 2 驱动程序。

试试:

main_db2_data_source.setDriverType(4);

【讨论】:

【参考方案2】:

db2 驱动程序需要另一个包含许可证的 jar。

此许可证控制连接类型。如果您打算使用“db2 connect”作为 i 系列连接到大型机,您应该使用相应的许可证。如果您要连接到 Linux UNIX 或 Windows 服务器,则在获得“Data server client for JDBC”时会包含许可证

【讨论】:

谢谢,这不是问题,因为我没有连接到大型机,但在将来的某个时间点我需要连接,届时您的建议会很有用。跨度> 【参考方案3】:

也试试这个:

Goto Configure Build Path --> Libraries 
                             --> JRE System Libraries 
                                --> Native Library Location : Set this to %DB2HOME%/BIN 
                             (which is where db2jcct2.dll is saved)

【讨论】:

【参考方案4】:

最近,当我从 Glassfish 服务器连接到 DB2 时,我遇到了这个问题。为此,我按照以下步骤解决了这个问题。 请检查以下步骤

step1) 我检查了 Domain.xml 文件中的 DB2 详细信息。我只看到了 用户名、密码、数据库名、服务器名、端口号,但我没有看到 DriverType。 表示驱动程序类型为 2 或 4。

2)为了添加我已经登录到 Glassfish 服务器管理控制台的驱动程序类型

资源-->JDBC-->连接池-->我们的池名--.添加额外的属性

这里我添加了驱动类型为 4。

所以我的问题已经解决了

谢谢, 拉迈亚·皮拉拉。

【讨论】:

以上是关于为啥 DB2 Type 4 JDBC Driver 正在寻找本机库 db2jcct2?的主要内容,如果未能解决你的问题,请参考以下文章

是否有适用于 DB2 v6 的 JDBC Type 4 驱动程序?

tomcat 配置JNDI数据源

在 DB2 中实现类型 4 jdbc 驱动程序

DB2 JDBC 驱动程序(类型 4)在 Execute() 上挂起

无法从R Studio JDBC驱动程序连接到DB2服务器

websphere容器启动jdbc连接异常,db2报Error: SQLCODE=-204, SQLSTATE=42704, SQLERRMC=MARKET.ALL_SEQUENCES, DRIVER