ConversationManager instances leak when using OC4J servlet engine
-----------------------------------------------------------------
Key: ORCHESTRA-35
URL: https://issues.apache.org/jira/browse/ORCHESTRA-35
Project: MyFaces Orchestra
Issue Type: Bug
Components: Conversation
Affects Versions: 1.3
Reporter: Simon Kitching
Priority: Minor
As reported by Steve Ronderos, the OC4J servlet container does not call
removeAttribute on session attributes when the session is invalidated. This
means that the ConversationManagerSessionListener does not remove
ConversationManager instances from the ConversationWiperThread when the owning
session is destroyed.
This is possibly a bug in OC4J; the servlet specs aren't entirely clear what
should happen when a session is invalidated but it seems that the
HttpSessionBindingListener javadoc does imply that removeAttribute should be
called. Apache Tomcat certainly does call removeAttribute (see method
StandardSession.removeAttributeInternal for details).
Regardless of whether this is a servlet-engine bug or not, this is something
that it would be nice to handle.
One option would be to use weak references in the ConversationWiperThread.
Another would be for ConversationManagerSessionListener to implement the
HttpSessionListener interface and use the sessionDestroyed callback to scan for
ConversationManager instances and remove them from the wiper thread.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.