ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Hugh Ross" <hh4r...@gmail.com>
Subject Re: How get DB2Connection object from SqlMapClient?
Date Thu, 24 Jan 2008 21:43:16 GMT
Thanks.  Looks like JDBC V4/Java 6 is adding a method to Connection itself
for this purpose.  That will make things a lot easier.

On 1/24/08, Jeff Butler <jeffgbutler@gmail.com> wrote:
>
> Well...this is a real beauty of open source - you can easily change the
> inner class to public and recompile (you could also add the missing methods
> to the log proxy classes if you want to stay at 2.2).  I'll commit a
> change to make the inner class public so that your code won't break with
> future releases.
>
> Jeff Butler
>
>
>
> On Jan 24, 2008 2:19 PM, Hugh Ross <hh4ross@gmail.com> wrote:
>
> > Unfortunately, the InvocationHandler for SimplePooledConnection is a
> > private nested class.
> >
> > Yes, we can set properties at the DataSource level, but we want to
> > change it at run time based on the data access "service" being invoked (
> > e.g., for finer-grain performance reporting).
> >
> >
> >   On 1/24/08, Jeff Butler <jeffgbutler@gmail.com> wrote:
> > >
> > > I see.  Then you'll need to do the "isProxy" method and check for
> > > SimplePooledConnection as the invocation handler.  Then you can call the
> > > getRealConnection() method - which may return a further proxied object if
> > > logging is enabled.  Proxy upon proxy - it can get complex to unwind these
> > > things.
> > >
> > > I have to wonder - is this really necessary?  You can probably set the
> > > value you mentioned as a driver property and not have to write all this
> > > untangling code.
> > >
> > > Jeff Butler
> > >
> > >
> > >
> > >
> > > On Jan 24, 2008 12:33 PM, Hugh Ross <hh4ross@gmail.com> wrote:
> > >
> > > > In my debugger, it looks like my Proxy is
> > > > actually SimpleDataSource-related, not logging.  And, SimpleDataSource
seems
> > > > to have a method to unrwrapConnection().  Still digging...
> > > >
> > > >
> > > > On 1/24/08, Jeff Butler <jeffgbutler@gmail.com > wrote:
> > > > >
> > > > > I just checked SVN and that method was indeed added in 2.3.  I'll
> > > > > add that information to the WIKI page.
> > > > >
> > > > > There's no other way to the underlying Connection object unless
> > > > > you disable logging in all circumstances, or you write some custom
> > > > > reflection code that gives you access to the private field.  Upgrading
to
> > > > > 2.3 is much easier (I would say that 2.3 is quite stable - it's
> > > > > been out over a year).
> > > > >
> > > > > Jeff Butler
> > > > >
> > > > >
> > > > >  On Jan 24, 2008 11:56 AM, Hugh Ross <hh4ross@gmail.com> wrote:
> > > > >
> > > > > >
> > > > > > Thanks, Jeff.  I'm not finding a getConnection method in the
> > > > > > ConnectionLogProxy class.  Is that because I'm using iBATIS
> > > > > > 2.2.0?  If so, is there another way to get the underlying
> > > > > > Connection object?
> > > > > >
> > > > > >
> > > > > >   On 1/24/08, Jeff Butler <jeffgbutler@gmail.com > wrote:
> > > > > > >
> > > > > > > This comes up a lot!  I just added a WIKI page describing
the
> > > > > > > process:
> > > > > > >
> > > > > > > http://opensource.atlassian.com/confluence/oss/pages/viewpage.action?pageId=15597591
> > > > > > >
> > > > > > >
> > > > > > > Jeff Butler
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > On Jan 24, 2008 10:03 AM, Hugh Ross <hh4ross@gmail.com>
wrote:
> > > > > > >
> > > > > > > > Can anyone provide some sample code for this?
> > > > > > > >
> > > > > > > > I tried, but seemed to be blocked by $proxy objects
or odd
> > > > > > > > looking com.ibm.db2.jcc.b.b objects...
> > > > > > > >
> > > > > > > > For example, this did not work for me:
> > > > > > > >
> > > > > > > >         java.sql.Connection conn =
> > > > > > > > sqlMapClient.getCurrentConnection();
> > > > > > > >
> > > > > > > >         if (conn instanceof com.ibm.db2.jcc.DB2Connection
)
> > > > > > > >         {
> > > > > > > >             com.ibm.db2.jcc.DB2Connection db2conn
= (
> > > > > > > > com.ibm.db2.jcc.DB2Connection)conn;
> > > > > > > >             db2conn.setDB2ClientApplicationInformation
> > > > > > > > ("SomethingUsefulHere");
> > > > > > > >         }
> > > > > > > >
> > > > > > > > I also tried getting the DataSource 1st.
> > > > > > > >
> > > > > > > > Thanks!
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>

Mime
View raw message