Connection to remote db2 database through JDBC fails

3

I am new to db2. I want to ask if it is possible to just connect to a db2 database on a remote db2 server through my java application? Merely having jdbc driver of type 4?

I am having db2jcc4 driver on build path.

When I try this simple code

 public static void main(String[] args) {
        Class.forName("com.ibm.db2.jcc.DB2Driver");
        System.out.println("Driver loaded");

        try {
            Connection dbConn =     DriverManager.getConnection("jdbc:db2://192.168.0.103:50000/ABC", "****", "*****");
        } catch (SQLException e) {
            e.printStackTrace();
        }

}

Connection fails with this exception. I am unable to trace what is exactly happening?

 com.ibm.db2.jcc.am.SqlException: [jcc][t4][10262][11223][4.19.26] Unexpected Throwable caught: null. ERRORCODE=-4228, SQLSTATE=null
at com.ibm.db2.jcc.am.kd.a(Unknown Source)
at com.ibm.db2.jcc.am.kd.a(Unknown Source)
at com.ibm.db2.jcc.am.kd.a(Unknown Source)
at com.ibm.db2.jcc.t4.b.b(Unknown Source)
at com.ibm.db2.jcc.t4.b.a(Unknown Source)
at com.ibm.db2.jcc.t4.b.a(Unknown Source)
at com.ibm.db2.jcc.t4.b.a(Unknown Source)
at com.ibm.db2.jcc.t4.b.<init>(Unknown Source)
at com.ibm.db2.jcc.DB2SimpleDataSource.getConnection(Unknown Source)
at com.ibm.db2.jcc.DB2SimpleDataSource.getConnection(Unknown Source)
at com.ibm.db2.jcc.DB2Driver.connect(Unknown Source)
at com.ibm.db2.jcc.DB2Driver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at com.connect.db2.ConnectToServer.main(ConnectToServer.java:22)


 Caused by: java.lang.NullPointerException
at com.ibm.db2.jcc.am.Connection.completeSqlca(Unknown Source)
at com.ibm.db2.jcc.t4.z.q(Unknown Source)
at com.ibm.db2.jcc.t4.z.p(Unknown Source)
at com.ibm.db2.jcc.t4.z.l(Unknown Source)
at com.ibm.db2.jcc.t4.z.d(Unknown Source)
at com.ibm.db2.jcc.t4.b.k(Unknown Source)
at com.ibm.db2.jcc.t4.b.b(Unknown Source)
at com.ibm.db2.jcc.t4.b.a(Unknown Source)
... 12 more

Also the db2diag.log after getconnection is :

 PID     : 5110                 TID : 140245920114432 PROC : db2sysc 0
 INSTANCE: sachindb             NODE : 000            DB   : ABC
 APPHDL  : 0-46                 APPID: 192.168.0.101.64054.151230182945
 AUTHID  : SACHINDB             HOSTNAME: Sachin
 EDUID   : 22                   EDUNAME: db2agent (ABC) 0
 FUNCTION: DB2 UDB, base sys utilities, sqleIsDatabaseDirectoryConnectable, probe:6835
 MESSAGE : ZRC=0x8005006D=-2147155859=SQLE_CA_BUILT
      "SQLCA has been built and saved in component specific control   block."
 DATA #1 : SQLCA, PD_DB2_TYPE_SQLCA, 136 bytes
 sqlcaid : SQLCA     sqlcabc: 136   sqlcode: -1035   sqlerrml: 0
 sqlerrmc: 
 sqlerrp : SQLE534 
 sqlerrd : (1) 0x00000000      (2) 0x00000000      (3) 0x00000000
       (4) 0x00000000      (5) 0x00000000      (6) 0x00000000
 sqlwarn : (1)      (2)      (3)      (4)        (5)       (6)    
       (7)      (8)      (9)      (10)        (11)     
 sqlstate:      
jdbc
db2
asked on Stack Overflow Dec 30, 2015 by Sachin Giri • edited Dec 30, 2015 by Sachin Giri

1 Answer

0

Are you using AES encryption mechanism in Java 7? If so, I found this solution via Googull at IBM.com

Otherwise, try creating a DB2SimpleDataSource object directly.

private DB2SimpleDataSource db2;
private void configureDataSource() {

     db2 = new DB2SimpleDataSource();
     db2.setServerName("192.168.0.103");
     db2.setPortNumber(50000);
     db2.setDatabaseName("ABC");
     db2.setUser("****");
     db2.setPassword("*****");
     db2.setReadOnly(true);          
}

Then connect like this Connection c = db2.getConnection() or this Connection c = db2.getConnection("****", "*****")

Also... See this similar question

answered on Stack Overflow Dec 30, 2015 by geneSummons • edited May 23, 2017 by Community

User contributions licensed under CC BY-SA 3.0