ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Clinton Begin" <clinton.be...@gmail.com>
Subject Re: What is RequestScope used for?
Date Tue, 06 Mar 2007 17:39:54 GMT
Is this all in the same VM?

Spring is the recommended DAO solution and is probably the way that at least
50% of iBATIS users use it.  You don't need to worry about transactions at
all with Spring, it will take care of it (as far as iBATIS is concerned at
least).  Have a look at the spring docs to ensure that you're using it the
right way.

I agree that you should start by looking at the other part that uses your
own lib with iBATIS DAO.  With iBATIS DAO you need to ensure you're starting
and ending transactions in a try/finally block just like with SqlMapClient.

Cheers,
Clinton

On 3/6/07, Kalcevich, Daniel <dkalcevich@firstam.com> wrote:
>
>  Clinton,
>
>
>
> Thanks for the response.  Now with regards to the Transactions… our
> application uses SQL Maps in two different ways.
>
>
>
>    1. Within Spring inside the Web App – We use transactions within
>    Spring, thus SQL maps should not be using the transactions.
>    2. A library we developed that the Web App uses – This uses the DAO
>    framework and SQL Maps internally, but only retrieves information from the
>    DB, not inserts.
>
>
>
> For the Transactions, do I have to declare them explicitly in both places,
> or do you think it would be better to address the standalone library first?
>
>
>
> Daniel
>
>
>  ------------------------------
>
> Yep, you have a leak and it is RequestScope related...but it's likely not
> an ibatis bug...
>
> It's more likely that you're not ending transactions properly.
>
> try {
>   sqlMapClient.startTransaction();
>   ///... do work
> } finally {
>   sqlMapClient.endTransaction();
> }
>
> Clinton
>
>
>  ------------------------------
>
> *From:* Kalcevich, Daniel
> *Sent:* Tuesday, March 06, 2007 8:18 AM
> *To:* 'user-java@ibatis.apache.org'
> *Subject:* RE: What is RequestScope used for?
>
>
>
> OK, upon looking at the Yourkit, I am showing the number of objects in
> memory as the following:
>
>
>
> -          com.ibatis.sqlmap.engine.impl.SqlMapClientImpl – 212 objects
> with a total retained size in memory of 31.38MB
>
> -          com.ibatis.sqlmap.engine.scope.RequestScope – 108, 544 objects
> with a total retained size in memory of 16.49MB.
>
> -          com.ibatis.sqlmap.engine.scope.SessionScope – 27,136 objects
> with a total retained size in memory of 3.03 MB.
>
>
>
> Do those numbers make sense?  I only question it because with every
> snapshot of the memory I have taken along the way, the
> RequestScope/SessionScope objects keep increasing.
>
>
>
> Daniel
>
>
>  ------------------------------
>
> *From:* Kalcevich, Daniel
> *Sent:* Tuesday, March 06, 2007 7:04 AM
> *To:* 'user-java@ibatis.apache.org'
> *Subject:* RE: What is RequestScope used for?
>
>
>
> I found about this RequestScope through the profiler YourKit.  Here is the
> trail that references the IBatis objects.
>
>
>
> map of com.ibatis.sqlmap.engine.scope.RequestScope
>
> --[121] of java.lang.Object[513]
>
> ---elementData of java.util.ArrayList
>
> ----list of java.util.Collections$SynchronizedRandomAccessList
>
> -----pool of com.ibatis.common.util.ThrottledPool
>
> ------requestPool of com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelega te
>
>
> ------delegate of com.ibatis.sqlmap.engine.impl.SqlMapClientImpl
>
> -------client of com.ibatis.dao.engine.transaction.sqlmap.SqlMapDaoTransactionManager
>
> --------transactionManager of com.ibatis.dao.engine.impl.DaoContext
>
> ---------[0] of java.lang.Object[11]
>
> ----------elementData of java.util.ArrayList
>
> -----------value of java.lang.ThreadLocal$ThreadLocalMap$Entry
>
> ------------[1442] of java.lang.ThreadLocal$ThreadLocalMap$Entry[2049]
>
> -------------table of java.lang.ThreadLocal$ThreadLocalMap
>
> --------------threadLocals of java.lang.Thread [Stack Local, Thread]
>
>
>
>
>
> The reason I thought it might be contributing to a memory leak was the
> fact that at every snapshot I take, the number of HashMaps continues to
> increase without going down.  Then when I look at what it is referring to,
> it points to the RequestScope.
>
>
>
> While looking in the trace, I saw that it was referencing the DaoContext's
> transaction Manager.  Could the Transaction Manager be playing a part in
> this?  My application uses Spring with SQL Maps, but a library we wrote uses
> the DAO Framework specifically.  The Spring application does not use it.  I
> think that is worth looking into, given what I see in the profiler.
>
>
>
> Daniel
>
>
>
>
>  ------------------------------
>
> *From:* Kalcevich, Daniel
> *Sent:* Monday, March 05, 2007 11:37 AM
> *To:* 'user-java@ibatis.apache.org'
> *Subject:* What is RequestScope used for?
>
>
>
> Hello,
>
>
>
> I have a Spring, Struts, SQL Map application that runs on JBoss/Tomcat.
> And while going through a profiler, I am seeing that there are several
> instances of "com.ibatis.sqlmap.engine.scope.RequestScope".  What is that
> object used for?  The reason I ask is that I am trying to track down a
> memory leak and am wondering if this class is possibly part of the cause?
> Any help is greatly appreciated.  Thank you.
>
>
>
> Daniel
>

Mime
View raw message