This portlet messaging library is intended for situations when:
You want to build an application out of several interacting portlets (e.g. a portlet which presents a list or index, and a number of portlets which display information about the selected item)
You've read this Tip on java.net and decided that the PortletSession is the way to go (if you wanted one of the other methods, have a look at Limitations in the Documentation)
You can't simply hardcode the messaging using APPLICATION_SCOPE session variables with known names, because:
Maybe you want many instances of the same portlet on the same page, or different pages, with each instance talking to different portlets
Maybe you want the user to be able to dynamically add new portlet instances, and configure the 'wiring' of messages between portlets.
Maybe you want portlets in different portlet applications to communicate.
This is version 2 of a slightly more complicated messaging system, implemented for the Discovery Net project. Please let me know if you find it useful, or have any comments/advice/bugfixes that may make it better. The source is included and you're welcome to modify/use it however you like. It's free, no guarantees.
New in version 2
Cross-context messaging
Support for dynamic removal of message inputs/outputs
Simple messaging model: message names in session must be hardcoded into the portlets
Advanced messaging model: message names in session do not need to be hardcoded. A Message Centre keeps track of all the mappings between local message names and global message names, allowing dynamic reconfiguration of message 'routes' by the administrator or the portal user.