[
https://issues.apache.org/jira/browse/GERONIMO-6138?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13608100#comment-13608100
]
Moritz Hoffmann commented on GERONIMO-6138:
-------------------------------------------
I was able to build a custom Geronimo with JDBC 4 support for DB2. Here are the
instructions on what needs to be done.
- Checkout tranql and build it. It is available in SVN on
https://svn.codehaus.org/tranql/ra/trunk/
- This will fail as the DB2 driver is not available. Install the db2jcc4 driver
into the local maven repo using
mvn install:install-file -Dfile=${path to db2jcc4.jar} \
-DgroupId=com.ibm.db2 \
-DartifactId=db2jcc4 \
-Dversion=10.1 \
-Dpackaging=jar
mvn install:install-file -Dfile=${path to db2jcc.jar} \
-DgroupId=com.ibm.db2 \
-DartifactId=db2jcc \
-Dversion=10.1 \
-Dpackaging=jar
mvn install:install-file -Dfile=${path to db2jcc_license_cu.jar} \
-DgroupId=com.ibm.db2 \
-DartifactId=db2jcc_license_cu \
-Dversion=10.1 \
-Dpackaging=jar
- Change the tranql version to 1.8. I used the versions:set maven plug-in, set
the version to 1.8, like this:
mvn versions:set -DnewVersion=1.8
This needs to be done for tranql-connector-[db2,parent,generic].
- Tell the DB2 connector to use db2jcc4:
--- tranql-connector-db2/tranql-connector-db2-common/pom.xml (revision 862)
+++ tranql-connector-db2/tranql-connector-db2-common/pom.xml (working copy)
@@ -34,7 +34,7 @@
<dependencies>
<dependency>
<groupId>com.ibm.db2</groupId>
- <artifactId>db2jcc</artifactId>
+ <artifactId>db2jcc4</artifactId>
<scope>provided</scope>
</dependency>
And:
--- tranql-connector-db2/pom.xml (revision 862)
+++ tranql-connector-db2/pom.xml (working copy)
@@ -44,20 +44,20 @@
</scm>
<properties>
- <db2.version>9.5</db2.version>
+ <db2.version>10.1</db2.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.ibm.db2</groupId>
- <artifactId>db2jcc</artifactId>
+ <artifactId>db2jcc4</artifactId>
<version>${db2.version}</version>
</dependency>
- Try to build the generic and db2 parts and install them in the local
repository (mvn install). If a compile error occurs, then apply the following
patch:
---
tranql-connector-db2/tranql-connector-db2-common/src/main/java/org/tranql/connector/db2/XAMCF.java
(revision 862)
+++
tranql-connector-db2/tranql-connector-db2-common/src/main/java/org/tranql/connector/db2/XAMCF.java
(working copy)
@@ -54,7 +54,7 @@
public ManagedConnection createManagedConnection(Subject subject,
ConnectionRequestInfo connectionRequestInfo) throws ResourceException {
CredentialExtractor credentialExtractor = new
CredentialExtractor(subject, connectionRequestInfo, this);
- XAConnection sqlConnection = getPhysicalConnection(subject,
credentialExtractor);
+ XAConnection sqlConnection =
getPhysicalConnection(credentialExtractor);
try {
ManagedXAConnection mxac = null;
if (preparedStatementCacheSize > 0) {
Try to build it again.
- Tell Geronimo to use our custom tranql 1.8 by changing some version numbers:
--- plugins/connector-1_6/pom.xml (revision 1452838)
+++ plugins/connector-1_6/pom.xml (working copy)
@@ -186,7 +186,7 @@
<dependency>
<groupId>org.tranql</groupId>
<artifactId>tranql-connector-db2-xa</artifactId>
- <version>1.7</version>
+ <version>1.8</version>
<type>rar</type>
<exclusions>
<exclusion>
--- pom.xml (revision 1452838)
+++ pom.xml (working copy)
@@ -81,8 +81,8 @@
<xbeanBundleUtilsVersion>3.12</xbeanBundleUtilsVersion>
<jetty>jetty8</jetty>
<txmanagerVersion>3.1.1</txmanagerVersion>
- <tranqlVersion>1.7</tranqlVersion>
- <tranqlDerbyVersion>1.7</tranqlDerbyVersion>
+ <tranqlVersion>1.8</tranqlVersion>
+ <tranqlDerbyVersion>1.8</tranqlDerbyVersion>
<jaxbImplVersion>2.2.3-1_1</jaxbImplVersion>
<monitoringConsoleVersion>${project.version}</monitoringConsoleVersion>
- Patch Geronimo to fix one compile error:
---
plugins/connector-1_6/geronimo-connector-1_6/src/main/java/org/apache/geronimo/datasource/DataSourceService.java
(revision 1452838)
+++
plugins/connector-1_6/geronimo-connector-1_6/src/main/java/org/apache/geronimo/datasource/DataSourceService.java
(working copy)
@@ -252,9 +252,9 @@
}
@Override
- protected XAConnection getPhysicalConnection(Subject subject,
CredentialExtractor credentialExtractor)
+ protected XAConnection getPhysicalConnection(CredentialExtractor
credentialExtractor)
throws ResourceException {
- XAConnection connection = super.getPhysicalConnection(subject,
credentialExtractor);
+ XAConnection connection =
super.getPhysicalConnection(credentialExtractor);
int isolationLevel = dataSourceDescription.getIsolationLevel();
if (isolationLevel != -1) {
try {
Afterwards Geronimo should build correctly. I also attach two SVN diffs
containing all changes I made.
> JDBC 4 API is not supported
> ----------------------------
>
> Key: GERONIMO-6138
> URL: https://issues.apache.org/jira/browse/GERONIMO-6138
> Project: Geronimo
> Issue Type: Bug
> Security Level: public(Regular issues)
> Affects Versions: 3.0-M1, 3.0.0
> Reporter: Arnaud MERGEY
> Fix For: 3.0.1
>
> Attachments: geronimo.patch, tranql.patch
>
>
> I try to deploy an application that uses some JDBC 4 API like
> java.sql.ResultSet.isClosed()
> This calls fails with following error
> java.lang.AbstractMethodError:
> org.tranql.connector.jdbc.ResultSetHandle.isClosed()Z
> According to JEE 6 specifications, JDBC 4 API should be supported in Geronimo
> 3, and it seems not.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira