Can Portlets communicate with other portlets? If they are JSR-168 portlets, and they are not defined within the same war file, which would allow you to share the PortletSession at the application level, well, then the sad answer is no, they can't communicate.
Fundamentally, a portlet application is packaged in a war. Imagine an accounting application built by IBM, and a human resources application built by oracle, both distributed as war files containing
Servlets and JSPs. Could these to applications communicate with each other? No, not really, not unless they added extra functionality through a common web service or something. Servlets and JSPs packages in separate war files cannot communicate with each other through sessions or ServletConfigs or ServletContexts or anything like that.
Portlets packaged in separate war files are exactly the same - they really have no context or session with which they can share information. This is what makes technology like IBM's C2A (Click-to-Action) so compelling - it brokers messages between portlet applications that are not packaged within a common war file.
The JetSpeed API had messaging. We may see something similar in JSR-286, the new portlet specification, but we're still a ways off from that.
-Cameron McKenzie