[Building Sakai] Tomcat not shutting down properly
Steve Swinsburg
steve.swinsburg at gmail.com
Thu Aug 23 14:28:49 PDT 2012
I use these annotations extensively in my applications and haven't had these issues. It might be with the specific beans, not the wiring method, perhaps.
cheers,
Steve
On 24/08/2012, at 6:51 AM, Brian Baillargeon <bbailla2 at uwo.ca> wrote:
> After days of commenting out sections of code, starting and stopping
> tomcat to check for lingering threads, I finally resolved it!
>
> Somehow the @Autowired and @Resource annotations were causing this.
> I removed all such annotations - they were only present in
> BaseCertificateController.
> While avoiding annotations, I tried to find a way to inject beans into
> BaseCertificateController, but I gave up because it's a spring-mvc
> controller and that complicated things on the xml side.
> So I simply removed the bean setters and getters in
> BaseCertificateController and used ComponentManager.get() calls to get
> our beans back.
>
> I grepped my Sakai source directory and didn't see any instances of
> @Autowired or @Resource outside of this tool. So, I must ask - is there
> a known issue with these annotations in the context of Sakai? Are there
> any configurations where these annotations don't cause lingering threads
> after tomcat shutdown? Is this documented?
>
> Thanks,
> Brian
>
> On 12-08-20 10:38 AM, Brian Baillargeon wrote:
>> I applied the patch, but I'm afraid the thread still lingers after
>> shutdown. If it matters, we use tomcat 5.5. I'll keep investigating why
>> the CertificateService bean seems to be the deciding factor
>>
>> On 12-08-18 07:04 PM, John Bush wrote:
>>> You might want to try patching in my lastest commit from this morning,
>>> in https://source.sakaiproject.org/contrib/rsmart/certification/
>>>
>>> I'm not sure its related or not, but we noticed some intermittent
>>> classpath problems on tomcat7 in the cert tool. We eventually
>>> narrowed it down to the use of interfaces in the hibernate model.
>>> There were a few entities that had some mistakes in the hbms. These
>>> sorts of weird classpath issues code cause problems at shutdown, it
>>> might be worth just giving it a try.
>>>
>>> On Fri, Aug 17, 2012 at 3:02 PM, Brian Baillargeon <bbailla2 at uwo.ca> wrote:
>>>> I'm revisiting this issue as we're going to need the certifications tool
>>>> soon.
>>>>
>>>> Recap - when certifications is deployed, a thread lingers after shutting
>>>> down tomcat (James is disabled)
>>>>
>>>> We've been working on certification in our msub
>>>> (https://source.sakaiproject.org/svn/msub/uwo.ca/certification/trunk/)
>>>> But this can be reproduced on rsmart's version in contrib.
>>>>
>>>> I've been trying to isolate the problem, and I found that if you remove
>>>> the beans:
>>>> com.rsmart.certification.api.CertificateService
>>>> and
>>>> com.rsmart.certification.api.CertificateService.wrapped
>>>> from
>>>> ./pack/src/webapp/WEB-INF/components.xml
>>>> ie. comment the beans out and remove any references to them from other
>>>> beans' properties
>>>> -build, deploy, startup, shutdown (all steps are successful)
>>>> -'pgrep java' shows no threads
>>>>
>>>> So I figured the culprits are either
>>>> com.rsmart.certification.api.CertificateService or
>>>> com.rsmart.certification.api.CertificateService.wrapped
>>>>
>>>> Then I reverted components.xml
>>>>
>>>> To be sure that the lingering thread wasn't caused by java code or
>>>> org.springframework.transaction.interceptor.TransactionProxyFactoryBean, I:
>>>> -removed the bean definition for
>>>> com.rsmart.certification.api.CertificateService.wrapped
>>>> -replaced com.rsmart.certification.api.CertificateService with:
>>>>
>>>> <bean id="com.rsmart.certification.api.CertificateService"
>>>> class="com.rsmart.certification.impl.hibernate.CertificateServiceHibernateImpl"
>>>> init-method="init">
>>>> <property name="sessionFactory" ref="org.sakaiproject.springframework.orm.hibernate.GlobalSessionFactory"/>
>>>> <!--<property name="documentTemplateService" ref="com.rsmart.certification.api.DocumentTemplateService"/>
>>>> <property name="contentHostingService" ref="org.sakaiproject.content.api.ContentHostingService"/>
>>>> <property name="toolManager" ref="org.sakaiproject.tool.api.ToolManager"/>
>>>> <property name="sessionManager" ref="org.sakaiproject.tool.api.SessionManager"/>
>>>> <property name="securityService" ref="org.sakaiproject.authz.api.SecurityService"/>
>>>> <property name="adminUser" value="admin"/>
>>>> <property name="userDirectoryService" ref="org.sakaiproject.user.api.UserDirectoryService"/>
>>>> <property name="templateDirectory" value="${sakai.home}/templates"/>
>>>> <property name="shortenedUrlService" ref="org.sakaiproject.shortenedurl.api.ShortenedUrlService"/>-->
>>>> </bean>
>>>>
>>>> -(I believe HibernateDaoSupport will complain without a sessionFactory)
>>>> -I replaced CertificateServiceHibernateImpl.java with a simple class
>>>> that extends HibernateDaoSupport and implements CertificateService such
>>>> that all its implemented methods were empty or returned null.
>>>> -build, deploy, startup, shutdown (all steps are successful)
>>>> -'pgrep java' shows a lingering thread
>>>>
>>>> So, it seems to me that the existence of the CertificateService bean
>>>> (regardless of whether the corresponding .java file has any executable
>>>> code) decides whether tomcat can or can't shut down properly, but I
>>>> can't find anything special about the bean.
>>>>
>>>> Does that all make sense? I'm new to spring so am I missing something
>>>> that can be affected by the existence of this bean? Can it get picked up
>>>> somewhere even if you don't add it as a property to another bean?
>>>>
>>>> Thanks,
>>>> Brian
>>>>
>>>> On 12-03-28 12:42 PM, Brian Jones wrote:
>>>>> We're not using many contrib tools, but they are as follows:
>>>>>
>>>>> - contentreview-impl
>>>>> (https://source.sakaiproject.org/contrib/turnitin/tags/content-review-0.7)
>>>>> - EntityBrowser (https://source.sakaiproject.org/contrib/asu/EntityBrowser)
>>>>> - certification
>>>>> (https://source.sakaiproject.org/contrib/rsmart/certification/)
>>>>> - rsmart-common
>>>>> (https://source.sakaiproject.org/contrib/rsmart/rsmart-common/)
>>>>> - sakora (https://source.sakaiproject.org/contrib/unicon/sakora-csv/trunk)
>>>>>
>>>>> FYI, we only experienced the problem AFTER deploying Rsmart's certification
>>>>> tool.
>>>>> And we're based off 2.8.x
>>>>>
>>>>> Brian Jones
>>>>> Applications Development
>>>>> Information Technology Services
>>>>> Support Services Building, Room 4326
>>>>> University of Western Ontario
>>>>> (519) 661-2111 x86969
>>>>> bjones86 at uwo.ca
>>>>>
>>>>>
>>>>> -----Original Message-----
>>>>> From: Seth Theriault [mailto:slt at columbia.edu]
>>>>> Sent: Wednesday, March 28, 2012 12:38 PM
>>>>> To: Brian Jones
>>>>> Cc: mike_jennings at unc.edu; 'Aaron Zeckoski';
>>>>> sakai-dev at collab.sakaiproject.org
>>>>> Subject: Re: [Building Sakai] Tomcat not shutting down properly
>>>>>
>>>>> Brian Jones wrote:
>>>>>
>>>>>> Thanks to everyone for doing some heavy duty testing on this issue.
>>>>>>
>>>>>> However, I don't believe gradebook2 is the root cause, as we don't use
>>>>>> gradebook2 at Western University at all, but we still experience the
>>>>> issue.
>>>>>
>>>>> What other contrib or additional tools are you running? We are looking more
>>>>> closely at GB2 because it was in the common Columbia-UNC overlap.
>>>>>
>>>>> It's also possible that a similar problem affects other tools.
>>>>>
>>>>> Seth
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> sakai-dev mailing list
>>>>> sakai-dev at collab.sakaiproject.org
>>>>> http://collab.sakaiproject.org/mailman/listinfo/sakai-dev
>>>>>
>>>>> TO UNSUBSCRIBE: send email to sakai-dev-unsubscribe at collab.sakaiproject.org with a subject of "unsubscribe"
>>>> _______________________________________________
>>>> sakai-dev mailing list
>>>> sakai-dev at collab.sakaiproject.org
>>>> http://collab.sakaiproject.org/mailman/listinfo/sakai-dev
>>>>
>>>> TO UNSUBSCRIBE: send email to sakai-dev-unsubscribe at collab.sakaiproject.org with a subject of "unsubscribe"
>>>
>> _______________________________________________
>> sakai-dev mailing list
>> sakai-dev at collab.sakaiproject.org
>> http://collab.sakaiproject.org/mailman/listinfo/sakai-dev
>>
>> TO UNSUBSCRIBE: send email to sakai-dev-unsubscribe at collab.sakaiproject.org with a subject of "unsubscribe"
>
> _______________________________________________
> sakai-dev mailing list
> sakai-dev at collab.sakaiproject.org
> http://collab.sakaiproject.org/mailman/listinfo/sakai-dev
>
> TO UNSUBSCRIBE: send email to sakai-dev-unsubscribe at collab.sakaiproject.org with a subject of "unsubscribe"
More information about the sakai-dev
mailing list