In CDI 1.0, the Conversation Scope has extremely limited availability. It is accessible from after RESTORE_VIEW phase in JSF, to the end of the Response, but this is extremely limiting, and in fact does not even address all use-cases within JSF.
- User has custom PhaseListener for Before RESTORE_VIEW phase, or user has custom PhaseListener that invokes before ConversationPhaseListener.
- In said PhaseListener, user attempts to access a ConversationScoped bean.
- ContextNotActiveException results, even though there may be a valid CID in the Request URL
- User attempts to access ConversationScope outside of the JSF lifecycle (Via EL in a Servlet or ServletFilter, for instance.)
- ContextNotActiveException results, this just doesn't work!
There is no reason why the ConversationScope should be any less available than the RequestScope, since both depend on the same underlying context objects. (Request, Session, etc)
ConversationScope should be ubiquitous in the Servlet Container Request/Response lifecycle. This will greatly improve ability to use CDI in view/web frameworks other than JSF.