You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-java@ibatis.apache.org by Paul Carr <Pa...@express-gifts.co.uk> on 2006/04/11 17:08:12 UTC

Logging parameters

Hi all, is there a way to tell iBatis to log out the SQL and any
parameters upon throwing an SQLException ?
 
i.e.. instead of logging "select name from person where name = $1";
make it log "select name from person where name = 'Paul';
 
Infact....how do you make it log out the SQL query string in the first
place?
 
-----Original Message-----
From: Alexander Sack [mailto:pisymbol@gmail.com] 
Sent: 07 April 2006 18:45
To: user-java@ibatis.apache.org
Subject: Re: iBatis within EAR files
 
The client?  The client is in my.jar which is a bunch of EJBs plus a
class wrapping a DAO.  The war file is in a separate deployment.  It
looks up an EJB interface, calls it.  The interfaces are shared in a
common library outside both WAR and EAR (global scope).

That eventually gets me inside my.jar.  my.jar DAO wrapper classes
calles getResourceAsReader()"com/blah/blah)."

The ibatis libraries are part of the my.jar MANIFEST within the EAR.
The ibatis libraries are in the EAR under a lib directory (MANIFEST has
Class-Path entres lib/ibatis.jar ,etc.)..

The only way for me to get this to work is to use
Thread.currentThread().setContextClassLoader(myDAO.class.getClassLoader(
)) before calling the getResourceAsReader() but then for a common
typeHandler callback defined in an external library (with global scope)
is not found.  I'm not even sure if I really should have to do this.

Thanks for the feedback,

-aps
On 4/7/06, Jeff Butler <je...@gmail.com> wrote:
What's the client?  my.war?  myejb.jar?  Make sure that my.jar is in the
manifest classpath of the client.
 
I have the ibatis*.jar files in the EAR on WebSphere and have no
troubles - but the different module's classpaths do need to be setup
properly.
 
Jeff Butler

 
On 4/7/06, Alexander Sack <pisymbol@gmail.com > wrote: 
Hello iBatis Folks,

I have this problem when using iBatis within in an EAR (I posted this in
the JBoss Forum but so far no solution):

my.ear
my.jar
my.jar/META-INF/MANIFEST.MF 
lib/ibatis*.jar
my.jar/com/blah/blah/mapfile.xml

The MANIFEST.MF file has Class-Path: lib/ibatis*.jar etc.  When the EAR
gets deployed, the getResourceReader() can not find the map files within
the my.jar file!  It seems that getResourceReader("com/blah 
/balh") can't find it in the current classpath.  I noticed that the
iBatis Resource object is using the current thread's context classloader
which I'm not sure seems right to me for this scenario. 

If I set the currentThread.setContextClassLoader() to my objects class
loader, it can then find the map files witin the JAR but then can't find
a typeHandler class in a common library outside the EAR (EARs are
scoped).  So this isn't going to work for me. 

Any clue on how to solve this or how I should load map files witin a
module in an EAR deployment?  What's the best practices regarding iBatis
and EAR files?

Thanks!

-aps


-- 
"What lies behind us and what lies in front of us is of little concern
to what lies within us." -Ralph Waldo Emerson 






-- 
"What lies behind us and what lies in front of us is of little concern
to what lies within us." -Ralph Waldo Emerson 

Re: Logging parameters

Posted by Diran Ayandele <Ad...@Sun.COM>.
Hi Paul - if you're using log4j you can just set the following category 
in your appender to debug:
<category name="com.ibatis">
<priority value="debug" />
</category>

It will log the sql and then on a subsequent line log any regular 
parameters. If you use inline parameters ($value$) they will show up in 
the sql.

Diran

Paul Carr wrote:

> Hi all, is there a way to tell iBatis to log out the SQL and any 
> parameters upon throwing an SQLException ?
>
> i.e.. instead of logging “select name from person where name = $1”;
>
> make it log “select name from person where name = ‘Paul’;
>
> Infact….how do you make it log out the SQL query string in the first 
> place?
>
> -----Original Message-----
> *From:* Alexander Sack [mailto:pisymbol@gmail.com]
> *Sent:* 07 April 2006 18:45
> *To:* user-java@ibatis.apache.org
> *Subject:* Re: iBatis within EAR files
>
> The client? The client is in my.jar which is a bunch of EJBs plus a 
> class wrapping a DAO. The war file is in a separate deployment. It 
> looks up an EJB interface, calls it. The interfaces are shared in a 
> common library outside both WAR and EAR (global scope).
>
> That eventually gets me inside my.jar. my.jar DAO wrapper classes 
> calles getResourceAsReader()"com/blah/blah)."
>
> The ibatis libraries are part of the my.jar MANIFEST within the EAR. 
> The ibatis libraries are in the EAR under a lib directory (MANIFEST 
> has Class-Path entres lib/ibatis.jar ,etc.)..
>
> The only way for me to get this to work is to use 
> Thread.currentThread().setContextClassLoader(myDAO.class.getClassLoader()) 
> before calling the getResourceAsReader() but then for a common 
> typeHandler callback defined in an external library (with global 
> scope) is not found. I'm not even sure if I really should have to do this.
>
> Thanks for the feedback,
>
> -aps
>
> On 4/7/06, *Jeff Butler* <jeffgbutler@gmail.com 
> <ma...@gmail.com>> wrote:
>
> What's the client? my.war? myejb.jar? Make sure that my.jar is in the 
> manifest classpath of the client.
>
> I have the ibatis*.jar files in the EAR on WebSphere and have no 
> troubles - but the different module's classpaths do need to be setup 
> properly.
>
> Jeff Butler
>
> On 4/7/06, *Alexander Sack* <pisymbol@gmail.com 
> <ma...@gmail.com> > wrote:
>
> Hello iBatis Folks,
>
> I have this problem when using iBatis within in an EAR (I posted this 
> in the JBoss Forum but so far no solution):
>
> my.ear
> my.jar
> my.jar/META-INF/MANIFEST.MF
> lib/ibatis*.jar
> my.jar/com/blah/blah/mapfile.xml
>
> The MANIFEST.MF file has Class-Path: lib/ibatis*.jar etc. When the EAR 
> gets deployed, the getResourceReader() can not find the map files 
> within the my.jar file! It seems that getResourceReader("com/blah
>
> /balh") can't find it in the current classpath. I noticed that the 
> iBatis Resource object is using the current thread's context 
> classloader which I'm not sure seems right to me for this scenario.
>
> If I set the currentThread.setContextClassLoader() to my objects class 
> loader, it can then find the map files witin the JAR but then can't 
> find a typeHandler class in a common library outside the EAR (EARs are 
> scoped). So this isn't going to work for me.
>
> Any clue on how to solve this or how I should load map files witin a 
> module in an EAR deployment? What's the best practices regarding 
> iBatis and EAR files?
>
> Thanks!
>
> -aps
>
>
>
> -- 
> "What lies behind us and what lies in front of us is of little concern 
> to what lies within us." -Ralph Waldo Emerson
>
>
>
>
>
>
> -- 
> "What lies behind us and what lies in front of us is of little concern 
> to what lies within us." -Ralph Waldo Emerson
>