You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Dan Rudman <dr...@kadeconsulting.com> on 2002/08/30 09:09:39 UTC
Driver-Specific JDBC Functionality
I'm working with postgresql 7.2.1 and want to leverage Large Objects in
my Struts application using oid's. I have the typical struts-config.xml
configuration specifying a connection pool with the postgresql driver.
I'm using Struts 1.0.2.
According to the documentation for postgresql, I need to obtain direct
access to the native postgresql Connection object to use its Large
Object API, i.e.:
LargeObjectManager lobjManager =
((org.postgresql.Connection)conn).getLargeObjectAPI();
However, the code below results in a ClassCastException on
GenericConnection
DataSource dataSource = servlet.findDataSource("pfdb");
Connection conn = dataSource.getConnection();
LargeObjectManager lobjManager =
((org.postgresql.Connection)conn).getLargeObjectAPI();
I read through the mailing list archives and came across a similar
request by David Noll from back in 2001 where he wanted to use
MySQL-specific features ( See
http://nagoya.apache.org/eyebrowse/ReadMsg?listName=struts-user@jakarta.
apache.org&msgId=143539 ).
The reply to that message, from Matthius Bauer, explained,
>>You must not cast GenericConnection to What you really want to do is
call
>>DataSource.getConnection which returns a Connection object like so:
>>
>> DataSource ds = getServlet().findDataSource(null);
>> Connection con = ds.getConnection();
>>
>>You can cast this connection to org.gjt.mm.mysql.Connection without
any
>>problems!
So, this is what I did, but alas, to no avail -- the ClassCastException
problem. No further responses were shown to illuminate a solution.
Digging into the GenericDataSource and GenericDataConnection, it becomes
clear that they are wrappers and do not expose the underlying
Connection. What I would appear to need is the ability to cast my
Connection to a GenericConnection, and then call getConnection(), and
then cast that to the database-specific Connection.
Unfortunately, GenericConnection.getConnection() has protected
visibility. I don't see a way to extract the native Connection... but
then again I'm 31 and have chicken pox and it's 3am on a work day.
I'm about ready to extract the 1.0.2 source, change the visibility to
public, and stick it back into struts.jar, but that seems a bit
barbaric.
Could someone point me in the right direction?
Sincere thanks,
Dan Rudman
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
Re: Driver-Specific JDBC Functionality
Posted by Vic <ne...@att.net>.
It ssems you just wnat Clob or Blob, so use the new postgresql drivers or
http://jxdbcon.sourceforge.net/ the other pgsql driver.
Vic
"Dan Rudman" <dr...@kadeconsulting.com> wrote in message
news:000501c24ff4$3504b270$6501a8c0@diablomob...
> I'm working with postgresql 7.2.1 and want to leverage Large Objects in
> my Struts application using oid's. I have the typical struts-config.xml
> configuration specifying a connection pool with the postgresql driver.
> I'm using Struts 1.0.2.
>
> According to the documentation for postgresql, I need to obtain direct
> access to the native postgresql Connection object to use its Large
> Object API, i.e.:
>
> LargeObjectManager lobjManager =
> ((org.postgresql.Connection)conn).getLargeObjectAPI();
>
>
> However, the code below results in a ClassCastException on
> GenericConnection
>
> DataSource dataSource = servlet.findDataSource("pfdb");
> Connection conn = dataSource.getConnection();
> LargeObjectManager lobjManager =
> ((org.postgresql.Connection)conn).getLargeObjectAPI();
>
>
> I read through the mailing list archives and came across a similar
> request by David Noll from back in 2001 where he wanted to use
> MySQL-specific features ( See
> http://nagoya.apache.org/eyebrowse/ReadMsg?listName=struts-user@jakarta.
> apache.org&msgId=143539 ).
>
> The reply to that message, from Matthius Bauer, explained,
>
> >>You must not cast GenericConnection to What you really want to do is
> call
> >>DataSource.getConnection which returns a Connection object like so:
> >>
> >> DataSource ds = getServlet().findDataSource(null);
> >> Connection con = ds.getConnection();
> >>
> >>You can cast this connection to org.gjt.mm.mysql.Connection without
> any
> >>problems!
>
> So, this is what I did, but alas, to no avail -- the ClassCastException
> problem. No further responses were shown to illuminate a solution.
>
> Digging into the GenericDataSource and GenericDataConnection, it becomes
> clear that they are wrappers and do not expose the underlying
> Connection. What I would appear to need is the ability to cast my
> Connection to a GenericConnection, and then call getConnection(), and
> then cast that to the database-specific Connection.
>
> Unfortunately, GenericConnection.getConnection() has protected
> visibility. I don't see a way to extract the native Connection... but
> then again I'm 31 and have chicken pox and it's 3am on a work day.
>
> I'm about ready to extract the 1.0.2 source, change the visibility to
> public, and stick it back into struts.jar, but that seems a bit
> barbaric.
>
> Could someone point me in the right direction?
>
> Sincere thanks,
> Dan Rudman
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>