What is it about?

It is a set of classes aiming to improve Spring Web Flow’s behavior for Optimized Session Replication.

Features

  • Supports Spring Web Flow 2.4.x
  • An implementation of Conversation Manager for Spring Web Flow with the purpose of improving session replication that use fine granularity.
  • Id generation utility, designed to generate ids for uniquely identifying. It includes a couple of generator strategies.

Conversation Manager

Conversation Manager manages conversations and effectively controls how state is stored physically when a flow execution is paused. SWF provides a default ConversationManager implementation: the SessionBindingConversationManager, which simply manages conversational state in the HttpSession storing all of the webflow conversations in the same attribute. For application servers who do session replication on changes in and per attribute of the session map, like Jboss AS, this cause that all of the conversations’s data get replicated even though just one conversation is altered.

This solution provides an option for Conversation Manager to stores each conversation in it’s own slot in the session map, thereby limiting replication to the conversation that are executed: ReplicationOptimizedSessionBindingConversationManager. It supports the same configuration facilities that SessionBindingConversationManager,

  • max-conversations. The maximum number of active conversations allowed in a session
  • lock-timeout. Time period that can elapse before a timeout occurs on an attempt to acquire a conversation lock
  • session-key. The key this conversation manager uses to store common conversations’s data in the session and as prefix of the session-key for each individual conversation.

And it also allows to set a custom id generator strategy for generating ids for uniquely identifying the conversations managed through property conversationIdGenerator (see Extended usages).