tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mark Eggers <its_toas...@yahoo.com>
Subject Re: Issues with Memory Leaks on Tomcat 6.0.28
Date Thu, 23 Sep 2010 18:44:21 GMT
I'll do some of this inline:


> WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting 
>property 'debug'
>  to '0' did not find a matching property.

Two things here:

1. Place your context in a META-INF/context.xml file in your web application, 
not in server.xml
2. Remove the debug attribute, since it hasn't been valid for a long time.

> WARNING:   No rules found matching 
'Server/Service/Engine/Host/Context/Logger'.


I don't see a reference to a Logger in the Context documentation for 5.5, 6.0, 
0r 7.0. If you're trying to log at the Context level, take a look at the 
documents for your version of Tomcat (which you've not mentioned) and add the 
appropriate Valve element.

> SEVERE: Error listenerStart

This is the problem (as pointed out before). The code you're using in your 
Listener isn't working as expected. I suspect that you're trying to start up 
iBatis (now MyBatis), and that the code is failing.
 
> SEVERE: The web application [/Simon] created a ThreadLocal with key of type
> [java.lang.ThreadLocal] (value [java.lang.ThreadLocal@3e0d1329]) and a value of 
>type 
> [com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl] (value 
> [com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl@4c650892]) but failed to 
>remove it when 
> the web application was stopped. This is very likely to create a memory leak.

> SEVERE: The web application [/Simon_WEB.war] created a ThreadLocal with key of 
>type 
> [java.lang.ThreadLocal] (value [java.lang.ThreadLocal@23b17d49]) and a value of 
>type 
> [com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl] (value 
> [com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl@599855ed]) but failed to 
>remove it when 
> the web application was stopped. This is very likely to create a memory leak.

This is fallout from your failed listener (as has been pointed out).

When you write a listener class, you have both a 
contextInitialized(ServletContextEvent sce) and a 
contextDestroyed(ServletContextEvent sce) method.

It looks like your contextInitialized method is failing, and you've not written 
a contextDestroyed method. You'll need to fix the first, and then write the 
second so that when the context is destroyed (like undeploying the application), 
you shut down all of your resources gracefully.

I've not used iBatis, so I am not aware of how the listener should be written. 
I've done this for Hibernate.

I'm also guessing that you're setting up iBatis to control the database pooling 
and access. You can let Tomcat manage the connection pool with iBatis. This may 
simplify your listener code somewhat. An iBatis thread concerning that can be 
found here:

http://markmail.org/message/pocthjsiw4cdhohj#query:+page:1+mid:pocthjsiw4cdhohj+state:results


So:

1. Fix your contextInitialized method
2. Write a contextDestroyed method
3. Configure iBatis to use Tomcat's database pooling (which may eliminate the 
need for 2)

. . . . just my two cents.

/mde/


      


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Mime
View raw message