Wesley Wu wrote:
> Hi Scott,
>
> The memory leak circumstance was not spotted in Resin 4.0.5 and early
> 4.0.x versions.
>   

> One of the inject path is:
>
> * A filter CmsPageFilter dispatch a request to a Jsp page through
> javax.servlet.RequestDispatcher.forward(request, response)
> * Jsp page called a BeanMethod custom jsp tag
> * The jsp tag create a VideoManager through my BeanManager wrapper
> (MDIObjectFactory)
> * VideoManager injects a PersonManager
> * PersonManager injects a PersonController
> * PersonController injects a DefaultBeanManager and a DefaultBeanReader
> * DefaultBeanManager and DefaultBeanReader inject a
> CmsPersistentUnit(@Singleton)
> * CmsPersistentUnit injects a javax.persistence.EntityManagerFactory
> (@PersistenceUnit)
>
> All those beans except CmsPersistentUnit were dependent scoped (not
> explicitly annotated)
> and should be created at its inject point and freed when
> the parent bean (the jsp page) was destroyed.
>   
Just double-checking, which of the beans have which scope annotations? I 
just verified that the basic getReference with dependent scope isn't 
leaking so there must be some non-dependent bean that's triggering the 
problem.

-- Scott
> I list three most frequently bean creation process here.
>
> #============handle jsp tag which requires bean creation===================
> # this call should be the creation of an @Dependent (thought not
> explicitly annotated) beans
> # like com.buysou.cms.managers.DefaultBeanManager or
> com.buysou.cms.managers.DefaultBeanReader
> # (for writing/reading database through a @RequestScoped @PersistentContext)
> com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl,
> CreationalContextImpl, InjectionPoint)        118
> com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object,
> CreationalContext)    117
> com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext)      
> 117
> com.caucho.config.inject.InjectionTargetBuilder.inject(Object,
> CreationalContext)    117
> com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext)   
> 117
> com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl,
> CreationalContextImpl, InjectionPoint)        117
> com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object,
> CreationalContext)    114
> com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext)      
> 114
> com.caucho.config.inject.InjectionTargetBuilder.inject(Object,
> CreationalContext)    114
> com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext)   
> 114
> com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl,
> CreationalContextImpl, InjectionPoint)        114
> com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object,
> CreationalContext)    112
> com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext)      
> 112
> com.caucho.config.inject.InjectionTargetBuilder.inject(Object,
> CreationalContext)    112
> com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext)   
> 111
> com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl,
> CreationalContextImpl, InjectionPoint)        111
> com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object,
> CreationalContext)    103
> com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext)      
> 103
> com.caucho.config.inject.InjectionTargetBuilder.inject(Object,
> CreationalContext)    103
> com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext)   
> 103
> com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl,
> CreationalContextImpl, InjectionPoint)        103
> com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object,
> CreationalContext)    89
> com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext)      
> 89
> com.caucho.config.inject.InjectionTargetBuilder.inject(Object,
> CreationalContext)    89
> com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext)   
> 88
> com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl,
> CreationalContextImpl, InjectionPoint)        88
> com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object,
> CreationalContext)    60
> com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext)      
> 60
> com.caucho.config.inject.InjectionTargetBuilder.inject(Object,
> CreationalContext)    60
> com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext)   
> 58
> com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl,
> CreationalContextImpl, InjectionPoint)        58
> com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object,
> CreationalContext)    34
> com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext)      
> 34
> com.caucho.config.inject.InjectionTargetBuilder.inject(Object,
> CreationalContext)    34
> com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext)   
> 33
> com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl,
> CreationalContextImpl, InjectionPoint)        33
> com.caucho.config.inject.InjectManager.getReference(Bean, Type,
> CreationalContext)    22
> # My BeanManager wrapper creating a bean instance by @Named
> mdi.java.factory.MDIObjectFactory.buildBean(String)   17
> com.buysou.cms.jsptags.components.cms.BeanMethod.start(Writer)        13
> com.buysou.cms.components.ComponentTagSupport.doStartTag()    13
> _jsp._WEB_22dINF._templates._default._video__jsp._jspService(HttpServletRequest,
> HttpServletResponse, PageContextImpl, ServletContext, HttpSession,
> _video__jsp$TagState) 13
> _jsp._WEB_22dINF._templates._default._video__jsp._jspService(HttpServletRequest,
> HttpServletResponse)  13
> com.caucho.jsp.JavaPage.service(ServletRequest, ServletResponse)      13
> com.caucho.jsp.Page.pageservice(HttpServletRequest, HttpServletResponse)      
> 13
> com.caucho.server.dispatch.PageFilterChain.doFilter(ServletRequest,
> ServletResponse)      13
> com.caucho.server.dispatch.ServletInvocation.service(ServletRequest,
> ServletResponse)      13
> com.caucho.server.webapp.RequestDispatcherImpl.forward(ServletRequest,
> ServletResponse, String, Invocation, DispatcherType)  13
> com.caucho.server.webapp.RequestDispatcherImpl.forward(ServletRequest,
> ServletResponse)      13
> com.buysou.cms.pageactions.TemplateForwardResolution.execute(HttpServletRequest,
> HttpServletResponse)  13
> com.buysou.cms.servlet.CmsPageFilter.doFilter(ServletRequest,
> ServletResponse, FilterChain) 13
> com.caucho.server.dispatch.FilterFilterChain.doFilter(ServletRequest,
> ServletResponse)      13
> com.yinyuetai.servlet.UserMessageFilter.doFilter(ServletRequest,
> ServletResponse, FilterChain) 13
> com.caucho.server.dispatch.FilterFilterChain.doFilter(ServletRequest,
> ServletResponse)      13
> com.yinyuetai.servlet.UserCredentialFilter.doFilter(ServletRequest,
> ServletResponse, FilterChain) 13
> com.caucho.server.dispatch.FilterFilterChain.doFilter(ServletRequest,
> ServletResponse)      13
> com.yinyuetai.servlet.SiteInfoFilter.doFilter(ServletRequest,
> ServletResponse, FilterChain) 13
> com.caucho.server.dispatch.FilterFilterChain.doFilter(ServletRequest,
> ServletResponse)      13
> com.buysou.cms.servlet.WrapRequestResponseFilter.doFilter(ServletRequest,
> ServletResponse, FilterChain) 13
> com.caucho.server.dispatch.FilterFilterChain.doFilter(ServletRequest,
> ServletResponse)      13
> com.buysou.servlet.filters.encoding.EnhancedEncodingFilter.doFilter(ServletRequest,
> ServletResponse, FilterChain) 13
> com.caucho.server.dispatch.FilterFilterChain.doFilter(ServletRequest,
> ServletResponse)      13
> com.caucho.server.webapp.WebAppFilterChain.doFilter(ServletRequest,
> ServletResponse)      13
> com.caucho.server.webapp.AccessLogFilterChain.doFilter(ServletRequest,
> ServletResponse)      13
> com.caucho.server.dispatch.ServletInvocation.service(ServletRequest,
> ServletResponse)      13
>
> #===========handle jsp tag which requires bean creation===================
> # this call should be the creation of an @RequestScoped @PersistentContext
> com.caucho.config.inject.InjectManager$ContextReferenceFactory.create(CreationalContextImpl,
> CreationalContextImpl, InjectionPoint)        261
> com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object,
> CreationalContext)    254
> com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext)      
> 254
> com.caucho.config.inject.InjectionTargetBuilder.inject(Object,
> CreationalContext)    254
> com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext)   
> 254
> com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl,
> CreationalContextImpl, InjectionPoint)        254
> com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object,
> CreationalContext)    254
> com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext)      
> 254
> com.caucho.config.inject.InjectionTargetBuilder.inject(Object,
> CreationalContext)    254
> com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext)   
> 254
> com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl,
> CreationalContextImpl, InjectionPoint)        254
> com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object,
> CreationalContext)    252
> com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext)      
> 252
> com.caucho.config.inject.InjectionTargetBuilder.inject(Object,
> CreationalContext)    252
> com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext)   
> 252
> com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl,
> CreationalContextImpl, InjectionPoint)        252
> com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object,
> CreationalContext)    247
> com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext)      
> 247
> com.caucho.config.inject.InjectionTargetBuilder.inject(Object,
> CreationalContext)    247
> com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext)   
> 245
> com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl,
> CreationalContextImpl, InjectionPoint)        245
> com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object,
> CreationalContext)    223
> com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext)      
> 223
> com.caucho.config.inject.InjectionTargetBuilder.inject(Object,
> CreationalContext)    223
> com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext)   
> 223
> com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl,
> CreationalContextImpl, InjectionPoint)        223
> com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object,
> CreationalContext)    191
> com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext)      
> 191
> com.caucho.config.inject.InjectionTargetBuilder.inject(Object,
> CreationalContext)    191
> com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext)   
> 191
> com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl,
> CreationalContextImpl, InjectionPoint)        191
> com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object,
> CreationalContext)    132
> com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext)      
> 132
> com.caucho.config.inject.InjectionTargetBuilder.inject(Object,
> CreationalContext)    132
> com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext)   
> 125
> com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl,
> CreationalContextImpl, InjectionPoint)        125
> com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object,
> CreationalContext)    66
> com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext)      
> 66
> com.caucho.config.inject.InjectionTargetBuilder.inject(Object,
> CreationalContext)    66
> com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext)   
> 65
> com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl,
> CreationalContextImpl, InjectionPoint)        65
> com.caucho.config.inject.InjectManager.getReference(Bean, Type,
> CreationalContext)    43
> # My BeanManager wrapper creating a bean instance by @Named
> mdi.java.factory.MDIObjectFactory.buildBean(String)   35
> com.buysou.cms.jsptags.components.cms.BeanMethod.start(Writer)        31
> com.buysou.cms.components.ComponentTagSupport.doStartTag()    31
> _jsp._WEB_22dINF._templates._default._video__jsp._jspService(HttpServletRequest,
> HttpServletResponse, PageContextImpl, ServletContext, HttpSession,
> _video__jsp$TagState) 18
> _jsp._WEB_22dINF._templates._default._video__jsp._jspService(HttpServletRequest,
> HttpServletResponse)  18
> com.caucho.jsp.JavaPage.service(ServletRequest, ServletResponse)      18
> com.caucho.jsp.Page.pageservice(HttpServletRequest, HttpServletResponse)      
> 18
> com.caucho.server.dispatch.PageFilterChain.doFilter(ServletRequest,
> ServletResponse)      18
> com.caucho.server.dispatch.ServletInvocation.service(ServletRequest,
> ServletResponse)      18
> com.caucho.server.webapp.RequestDispatcherImpl.forward(ServletRequest,
> ServletResponse, String, Invocation, DispatcherType)  18
> com.caucho.server.webapp.RequestDispatcherImpl.forward(ServletRequest,
> ServletResponse)      18
> com.buysou.cms.pageactions.TemplateForwardResolution.execute(HttpServletRequest,
> HttpServletResponse)  18
> com.buysou.cms.servlet.CmsPageFilter.doFilter(ServletRequest,
> ServletResponse, FilterChain) 18
> com.caucho.server.dispatch.FilterFilterChain.doFilter(ServletRequest,
> ServletResponse)      18
> com.yinyuetai.servlet.UserMessageFilter.doFilter(ServletRequest,
> ServletResponse, FilterChain) 18
> com.caucho.server.dispatch.FilterFilterChain.doFilter(ServletRequest,
> ServletResponse)      18
> com.yinyuetai.servlet.UserCredentialFilter.doFilter(ServletRequest,
> ServletResponse, FilterChain) 18
> com.caucho.server.dispatch.FilterFilterChain.doFilter(ServletRequest,
> ServletResponse)      18
> com.yinyuetai.servlet.SiteInfoFilter.doFilter(ServletRequest,
> ServletResponse, FilterChain) 18
> com.caucho.server.dispatch.FilterFilterChain.doFilter(ServletRequest,
> ServletResponse)      18
> com.buysou.cms.servlet.WrapRequestResponseFilter.doFilter(ServletRequest,
> ServletResponse, FilterChain) 18
> com.caucho.server.dispatch.FilterFilterChain.doFilter(ServletRequest,
> ServletResponse)      18
>
> #===========handle http page request which create action 
> beans==================
> # this call should be the creation of an @RequestScoped @PersistentContext too
> com.caucho.config.inject.InjectManager$ContextReferenceFactory.create(CreationalContextImpl,
> CreationalContextImpl, InjectionPoint)        261
> com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object,
> CreationalContext)    254
> com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext)      
> 254
> com.caucho.config.inject.InjectionTargetBuilder.inject(Object,
> CreationalContext)    254
> com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext)   
> 254
> com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl,
> CreationalContextImpl, InjectionPoint)        254
> com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object,
> CreationalContext)    254
> com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext)      
> 254
> com.caucho.config.inject.InjectionTargetBuilder.inject(Object,
> CreationalContext)    254
> com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext)   
> 254
> com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl,
> CreationalContextImpl, InjectionPoint)        254
> com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object,
> CreationalContext)    252
> com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext)      
> 252
> com.caucho.config.inject.InjectionTargetBuilder.inject(Object,
> CreationalContext)    252
> com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext)   
> 252
> com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl,
> CreationalContextImpl, InjectionPoint)        252
> com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object,
> CreationalContext)    247
> com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext)      
> 247
> com.caucho.config.inject.InjectionTargetBuilder.inject(Object,
> CreationalContext)    247
> com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext)   
> 245
> com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl,
> CreationalContextImpl, InjectionPoint)        245
> com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object,
> CreationalContext)    223
> com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext)      
> 223
> com.caucho.config.inject.InjectionTargetBuilder.inject(Object,
> CreationalContext)    223
> com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext)   
> 223
> com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl,
> CreationalContextImpl, InjectionPoint)        223
> com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object,
> CreationalContext)    191
> com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext)      
> 191
> com.caucho.config.inject.InjectionTargetBuilder.inject(Object,
> CreationalContext)    191
> com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext)   
> 191
> com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl,
> CreationalContextImpl, InjectionPoint)        191
> com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object,
> CreationalContext)    132
> com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext)      
> 132
> com.caucho.config.inject.InjectionTargetBuilder.inject(Object,
> CreationalContext)    132
> com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext)   
> 125
> com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl,
> CreationalContextImpl, InjectionPoint)        125
> com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object,
> CreationalContext)    66
> com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext)      
> 66
> com.caucho.config.inject.InjectionTargetBuilder.inject(Object,
> CreationalContext)    66
> com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext)   
> 65
> com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl,
> CreationalContextImpl, InjectionPoint)        65
> com.caucho.config.inject.InjectManager.getReference(Bean, Type,
> CreationalContext)    43
> # My BeanManager wrapper creating a PageAction instance by classname
> mdi.java.factory.MDIObjectFactory.buildBean(Class)    8
> com.buysou.cms.servlet.CmsPageFilter.doFilter(ServletRequest,
> ServletResponse, FilterChain) 8
> com.caucho.server.dispatch.FilterFilterChain.doFilter(ServletRequest,
> ServletResponse)      8
> com.yinyuetai.servlet.UserMessageFilter.doFilter(ServletRequest,
> ServletResponse, FilterChain) 8
> com.caucho.server.dispatch.FilterFilterChain.doFilter(ServletRequest,
> ServletResponse)      8
> com.yinyuetai.servlet.UserCredentialFilter.doFilter(ServletRequest,
> ServletResponse, FilterChain) 8
> com.caucho.server.dispatch.FilterFilterChain.doFilter(ServletRequest,
> ServletResponse)      8
> com.yinyuetai.servlet.SiteInfoFilter.doFilter(ServletRequest,
> ServletResponse, FilterChain) 8
> com.caucho.server.dispatch.FilterFilterChain.doFilter(ServletRequest,
> ServletResponse)      8
> com.buysou.cms.servlet.WrapRequestResponseFilter.doFilter(ServletRequest,
> ServletResponse, FilterChain) 8
> com.caucho.server.dispatch.FilterFilterChain.doFilter(ServletRequest,
> ServletResponse)      8
> com.buysou.servlet.filters.encoding.EnhancedEncodingFilter.doFilter(ServletRequest,
> ServletResponse, FilterChain) 8
> com.caucho.server.dispatch.FilterFilterChain.doFilter(ServletRequest,
> ServletResponse)      8
> com.caucho.server.webapp.WebAppFilterChain.doFilter(ServletRequest,
> ServletResponse)      8
> com.caucho.server.webapp.AccessLogFilterChain.doFilter(ServletRequest,
> ServletResponse)      8
> com.caucho.server.dispatch.ServletInvocation.service(ServletRequest,
> ServletResponse)      8
> com.caucho.server.hmux.HmuxRequest.handleInvocation() 8
> com.caucho.server.hmux.HmuxRequest.handleRequestImpl()        8
> com.caucho.server.hmux.HmuxRequest.handleRequest()    8
> com.caucho.network.listen.TcpSocketLink.dispatchRequest()     8
> com.caucho.network.listen.TcpSocketLink.handleRequestsImpl(boolean)   8
> com.caucho.network.listen.TcpSocketLink.handleRequests(boolean)       8
>
>
> Hope these help.
>
> -Wesley
>
>
> _______________________________________________
> resin-interest mailing list
> resin-interest@caucho.com
> http://maillist.caucho.com/mailman/listinfo/resin-interest
>
>   



_______________________________________________
resin-interest mailing list
resin-interest@caucho.com
http://maillist.caucho.com/mailman/listinfo/resin-interest

Reply via email to