Application terminates with details: java.lang.Exception: Cannot connect to database DB2PE, reason: com.ibm.pdq.runtime.exception. DataRuntimeException: [pdq] The level n.nn.nn of the IBM Data Server Driver for JDBC and SQLJ and the level n.nn of the pdq.jar found in the classpath are incompatible. This pdq.jar requires the IBM Data Server Driver for JDBC and SQLJ to be at release 3.57 or higher, or 4.7 or higher.
This error usually occurs if the pdq.jar file is placed in the DB2® Performance Expert server's CLASSPATH, which is not necessary. You should put the newer JCC driver and the pdq.jar files in the application's CLASSPATH.If you want to keep the new JCC driver on PE server's CLASSPATH, you have to meet the following requirements:
The data server clients must use the JCC Type 4 driver to connect to the data server. The following JCC versions are supported:
- JCC 3.57 with APAR IZ50393 for JDBC 3 clients
- JCC 4.3 with APAR IZ43011 for JDBC 4 clients
- JCC 4.7 for JDBC 4 clients with DB2 Version 9.7 for Linux, UNIX, and Windows
If you don't change to the new JCC driver, you will have the following problem:
Type-4 XA Connectivity: A NullPointerException might occur
on DB2XADataSource.getDB2TrustedXAConnection() when the
enableEndToEndMonitoringFeature property is set to true.
______________________________________________________________ All Connectivities: If auto-generated keys is specified with the constant RETURN_GENERATED_KEYS, SQLCODE4470 (-4470) with message "Invalid operation: result set is closed" is encountered while processing the ResultSet returned from Statement.getGeneratedKeys(). (127025)
Diagnosing The Problem
To check which JCC driver version is installed, use the following Java command from the location where your JCC driver is located:
java -cp db2jcc.jar com.ibm.db2.jcc.DB2Jcc -version
Resolving The Problem
JCC (IBM Data Server Driver for JDBC and SQLJ) version 3.57 ships with DB2 version 9.7 GA.
If a Type 4 connection is being used (or if a Type 2 connection is used from a DB2 v9.7 client), this driver is compatible with v9.5 and v9.1 databases. For additional info:
Here is the link to download the JCC driver 3.57:http://www-01.ibm.com/support/docview.wss?uid=swg21385217
The JCC 3.57 driver can be used everywhere for type4 connections, but not for type2 connections. E2E features are available only for type4 connections now.
You can place the newer type4 JCC driver to the path of your application to enable e2e (end-to-end) features, but leaves the original JCC driver
shipped with DB2 to have type2 connectivity for all other applications (if any).
The application running in WAS should get the newer JDBC driver 3.57.
You can modify the global JDBC driver in WAS admin console or you can create a new JDBC driver.
The license should also be placed into the same(separate) directory, where the user places the newer db2jcc.jar and pdq.jar files.
License file is db2jcc_license_cu.jar, exists in the <db2 installation>\java folder.
Each JDBC driver is configured on a specific layer in WAS, either for a node, or for a node and for a server. Each application also belongs to a server in WAS, so there is always a possibility to separate JDBC drivers for particular applications.
The application usually is configured in the following way: a JDBC driver configured in WAS (set of jar files of a JDBC driver), a DataSource object configured in WAS (an object which says where to connect to and using which JDBC driver), J2C authentication is configured in WAS (an object which says what are the credentials to connect to a database). The application uses DataSource object configured above, which will use a specific JDBC driver.
An application can be deployed automatically using *.py scripts. If this is your case, you should refer to those scripts and take a look at what is the datasource configuration is made, like:
# JDBC Driver and DataSource Config Parameters
# Datasource properties
DefaultDatasourceName = "name of the datasource"
In the same script there could be JDBC paths configurations, like:
# Common JDBC Driver Paths
# Note: wsadmin parses the command line based on ";" regardless of platform type
DB2WinJccPath = "c:/sqllib/java/db2jcc.jar;c:/sqllib/java/db2jcc_license_cu.jar;"
Here you can change the path to the new path, where you placed the new JCC + PDQ + license files.
23 June 2018