Re: Cast java.sql.Connection to PGConnection - Mailing list pgsql-jdbc

From Vitalii Tymchyshyn
Subject Re: Cast java.sql.Connection to PGConnection
Date
Msg-id CABWW-d0oohfz3mFVB36utN9KKtA-dtoTyRnXRXkaL9dRF3Qxnw@mail.gmail.com
Whole thread Raw
In response to Re: Cast java.sql.Connection to PGConnection  ("David G. Johnston" <david.g.johnston@gmail.com>)
Responses Re: Cast java.sql.Connection to PGConnection  (Eric Neron <eneron@e-djuster.ca>)
Re: Cast java.sql.Connection to PGConnection  (Eric Neron <eneron@e-djuster.ca>)
List pgsql-jdbc
I'd really suspect a classloading issue here. TS gets connection through JNDI and then tries to unwrap/cast. By any chance, have you got two postgresql driver jars in different classloaders (e.g. two webapps or tomcat lib and webapp or tomcat common lib)?

Best regards, Vitalii Tymchyshyn

Вт, 17 трав. 2016 17:06 користувач David G. Johnston <david.g.johnston@gmail.com> пише:
Except that didn't appear to work ... haven't confirmed the behavior myself.

In any case an apparent second report of this just surfaced:


David J.

On Tue, May 3, 2016 at 3:18 AM, Philippe Marschall <Philippe.Marschall@netcetera.com> wrote:
Hi

The following is the way to do it:

PGConnection pgCon = conn.unwrap(PGConnection.class);

Cheers
Philippe
________________________________________
From: pgsql-jdbc-owner@postgresql.org <pgsql-jdbc-owner@postgresql.org> on behalf of peter.penzov <peter.penzov@gmail.com>
Sent: Monday, May 2, 2016 20:29
To: pgsql-jdbc@postgresql.org
Subject: [JDBC] Cast java.sql.Connection to PGConnection

I want to upload a file in PostgreSQL using Tomcat:

@Resource(name = "jdbc/DefaultDB")
private DataSource ds;
Connection conn = ds.getConnection();

I tried to cast the conn object this way:

PGConnection pgCon = ((org.apache.commons.dbcp.DelegatingConnection)
conn).getInnermostDelegate();

I get

Caused by: java.lang.ClassCastException:
org.apache.tomcat.dbcp.dbcp2.PoolingDataSource$PoolGuardConnectionWrapper
cannot be cast to org.postgresql.PGConnection

I also tried:

Connection unwrap = conn.unwrap(Connection.class);
connSec = (org.postgresql.PGConnection) unwrap;

I get

java.sql.SQLException: Cannot unwrap to org.postgresql.PGConnection

LargeObjectManager pgCon = pgCon.getLargeObjectAPI();

What is the proper way to implement the code?

P.S

I tried this:

PGConnection pgConnection = null;

if (conn.isWrapperFor(PGConnection.class))
{
    pgConnection = conn.unwrap(PGConnection.class);
}

LargeObjectManager lobj = pgConnection.getLargeObjectAPI();

But I get NPE at this line LargeObjectManager lobj =
pgConnection.getLargeObjectAPI();




--
View this message in context: http://postgresql.nabble.com/Cast-java-sql-Connection-to-PGConnection-tp5901531.html
Sent from the PostgreSQL - jdbc mailing list archive at Nabble.com.


--
Sent via pgsql-jdbc mailing list (pgsql-jdbc@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-jdbc


--
Sent via pgsql-jdbc mailing list (pgsql-jdbc@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-jdbc

pgsql-jdbc by date:

Previous
From: Vladimir Sitnikov
Date:
Subject: Re: Tomcat JDBC Connection Pool interfaces to PostgreSQL...
Next
From: Eric Neron
Date:
Subject: Re: Cast java.sql.Connection to PGConnection