The Orchestra Core library provides the following features as described in the documentation for the Orchestra project:
Conversation scope (aka dialog scope) for beans.
Conversation-scope persistence contexts. This fixes the dreaded LazyInitializationException or NonUniqueObjectException problems when working with persistent objects.
Orchestra Core requires only Java 1.4 and JSF 1.1.
Orchestra assumes the presence of a server-side http session into which state is stored. If you are designing a highly scalable distributed system then this may not be the right approach for you.
Orchestra persistence features presume the presentation tier has access to the database, ie that the presentation and database-access tiers are combined. This is often the case in small-to-medium web applications. Large or security-sensitive applications which separate database access out into an isolated tier (eg use a "full EJB stack") cannot use the Orchestra persistence facilities, although they can still make use of the regular conversational support for beans in the presentation layer.
Orchestra conversations with persistence support will never be transparently "distributable"; JPA sessions are not serializable. However it should be possible for conversations that do not have an associated persistence context to be distributed; this work has not yet been done as the current Orchestra developers and users do not need this feature. If you need this feature, please contact the development list.
Orchestra currently does not support Portlets. It should not be particularly difficult to implement this, but the current Orchestra development team do not use Portlets so support will only be available when someone volunteers to do the necessary work.