Обсуждение: Pg JDBC 3 driver, JDK 1.6, Glassfish v2 incompatability
Hello,
Could some dev take a look at the following bug in the Glassfish Applicationserver, and either clear the JDBC PostgreSQL driver of any wrongdoing, or fix any problem that may be present in the driver? It’s really no big deal since I have no problem working around it, but even just getting a comment on it would put one of my worries at rest.
https://glassfish.dev.java.net/issues/show_bug.cgi?id=2779
The relevant part of it is:
CAUSE:
On further investigation, Postgres jdbc driver's Connection from
ConnectionPoolDataSource/XADataSource is a proxy of java.sql.Connection,
This proxy, in jdk 1.6 will list all methods of jdbc 4.0 connection (even though
the datasource is only jdbc 30)
This makes GlassFish to decide (during initialization of datasource) that it is
a jdbc 4.0 compatible connection and calls jdbc 4.0 methods of Connection,
causing AbstractMethodError thrown.
Thanks,
Thor Michael Støre
On Mon, 9 Apr 2007, Thor-Michael St�re wrote: > CAUSE: On further investigation, Postgres jdbc driver's Connection from > ConnectionPoolDataSource/XADataSource is a proxy of java.sql.Connection, > This proxy, in jdk 1.6 will list all methods of jdbc 4.0 connection > (even though the datasource is only jdbc 30) This makes GlassFish to > decide (during initialization of datasource) that it is a jdbc 4.0 > compatible connection and calls jdbc 4.0 methods of Connection, causing > AbstractMethodError thrown. > The real problem is that you are using the JDBC3 instead of JDBC4 driver with a 1.6 JVM. I don't believe that either PG or Glassfish are at fault. When the JDBC3 driver was built (under a 1.4/1.5) JDK it does implement all java.sql.Connection methods so it is fine to proxy for it. When run under a 1.6 JVM the proxying suddenly claims to implement more methods which Glassfish reasonably tries to use. So I think it's really a configuration error on your part. Kris Jurka