I have a Resource Handler that needs to access lower level beans that work in conversation scope. Our application allows multiple login sessions on different browser tabs working within the same browser session by keeping the login details at this scope - so a database access (my Resource Handler) needs the login for the Conversation that referenced it.
I've tried just expecting it to work, even using ExternalContext.encodeRedirectUrl() to try to make Faces include whatever it needs.
I've tried explicitly putting the ?cid parameter onto my request path so I am accessing
/myapp/javax.faces.resource/thumbnail_3963075518712822225212162218.png.xhtml?ln=com.myapp.attachment&cid=1
No Conversation appears in the Resource Handler.
Further if I try to test for this using Conversation.isTransient() I get a
javax.enterprise.context.ContextNotActiveException: Conversation Context not active when method called on conversation Transient conversation
(Yet I thought Conversation is always meant to be active, and the stack trace for the above does include the org.jboss.weld.servlet.ConversationPropagationFilter!
I'm hoping this is not to do with the bug https://issues.jboss.org/browse/JBSEAM-3689 - for which the workaround is "Do not use conversations!"
Is there better?
Thanks - Richard
Take a look at Seam Faces and see if you can get things to work the way you want. JSF has next to no compatibility with CDI in the JSF 2.0 and 2.1 specs. We're working hard with the lead for JSF to make it better for JSF 2.2, sorry for any inconveniences.