Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why is DB2 Type 4 JDBC Driver looking for native library db2jcct2?

Tags:

java

jdbc

db2

I thought the Type 4 JDBC driver was pure Java and wouldn't require native libraries.

When I put db2jcc4.jar in the WEB-INF/lib directory of my Tomcat app packaged as a .war file, I get the following error when attempting to use the app: Got SQLException: com.ibm.db2.jcc.am.SqlException: [jcc][10389][12245][4.12.55] Failure in loading native library db2jcct2, java.lang.UnsatisfiedLinkError

The relevant application code is as follows and the exception is thrown due to the last line in the listing:

        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();
like image 506
necromancer Avatar asked Nov 30 '11 11:11

necromancer


People also ask

What is JDBC driver for DB2?

JDBC drivers are Java library files with the extension . jar used by all Java applications to connect to the database. Usually, they are provided by the same company which implemented the Db2 software. DbSchema Tool already includes an Db2 driver, which is automatically downloaded when you connect to Db2.

What is db2jcc_license_cisuz jar?

The DB2 Universal JDBC Driver. db2jcc_license_cisuz.jar. The license file, db2jcc_license_cisuz. jar , contains licenses for Linux, Unix, Windows®, IBM System i®, and IBM System z. The IBM System z license is required in order to establish a JDBC connection to DB2 running on z/OS®.


2 Answers

I suspect the problem is that you haven't told it to use the type 4 driver - the same jar file contains both type 4 and type 2 drivers, I believe.

Try:

main_db2_data_source.setDriverType(4);
like image 113
Jon Skeet Avatar answered Sep 28 '22 11:09

Jon Skeet


The db2 driver needs another jar that includes the license.

This license controls the connection type. If you are going to use "db2 connect" to connect to a mainframe as an i series you should use the corresponding license. If you are going to connect to a Linux UNIX or Windows server, the license is included when you get the "Data server client for JDBC"

like image 26
AngocA Avatar answered Sep 28 '22 11:09

AngocA