Details
-
Type: Bug
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: 1.8.2
-
Fix Version/s: 1.8.3
-
Component/s: Framework
-
Labels:None
-
Environment:ICEfaces Core, ICEfaces Push Server
-
Workaround Exists:Yes
-
Workaround Description:Use the [tomcat-home]/bin/catalina.sh shell script and CTRL+C to startup and shutdown the Tomcat server.
Description
When using Tomcat's [tomcat-home]/bin/startup.sh and [tomcat-home]/bin/shutdown.sh shell scripts while having both an ICEfaces application and ICEfaces Push Server deployed, the shutdown.sh shell script is unable to completely get rid of the Tomcat process. This is due to a thread not properly shutdown in the DefaultMessageService.
There were two parts to the problem:
1. The DefaultMessageService was not properly closed upon Servlet destroy. Though cumbersome, the proper closure of the DefaultMessageService at the moment is currently: stop(), tearDownNow() and close().
2. The internally used QueueMessagePublisher was holding up a Thread from the ScheduledThreadPoolExecutor upon Servlet destroy. Though the DefaultMessageService contained logic to stop the QueueMessagePublisher and replace it with a NoopMessagePublisher, the logic was in an incorrect place. After removing this logic into the close() method the stuck thread issue seems to be resolved.
Marking this one as FIXED.