Hi Bernd,

On Fri, 2008-03-28 at 12:11 +0100, Bernd Winterstein wrote:
> Hi
> I have a one page conversation with access-scope. The page contains  
> several tabs which are switched by Ajax calls.
> The first time the page is loaded the last request is a css download,  
> upon which orchestra closes the conversation. The following requests  
> for other tabs works perfect, the conversations stays open.
> 
> 
> Mrz 28 11:37:21 DEBUG    
> org 
> .apache.myfaces.orchestra.conversation.jsf.AccessScopePhaseListener   
> invalidateAccessScopedConversations     Clearing access-scoped  
> conversation contactSearchController after rendering view /pages/ 
> doctor_details.jsp
> <-- THIS IS OKAY(old page)
> 
> Mrz 28 11:37:21 DEBUG    
> org 
> .apache.myfaces.orchestra.conversation.jsf.AccessScopePhaseListener   
> invalidateAccessScopedConversations     Not clearing accessed  
> conversation doctorDetailsController after rendering view /pages/ 
> doctor_details.jsp
> <-- THIS IS OKAY(NEW PAGE, CONVERSATION  SHOULD STAY OPEN)
> 
> 
> Mrz 28 11:37:21 DEBUG    
> org 
> .apache.myfaces.orchestra.conversation.jsf.AccessScopePhaseListener   
> invalidateAccessScopedConversations     Clearing access-scoped  
> conversation doctorDetailsController after rendering view /org/ 
> richfaces/renderkit/html/css/basic_classes.xcss
> <-- THIS IS WHAT I DON'T understand

You appear to have the suffix ".xcss" mapped to the FacesServlet, ie
that full facelets lifecycle (including phase listeners) is being run
when serving up that css file.

That's not usual; normally a css is a static resource, and is not served by the 
FacesServlet. Therefore the jsf phase-listeners do not run and this will not 
occur. I suppose it's some odd RichFaces feature that requires a JSF lifecycle 
to serve a css file.

Orchestra's AccessScopeManagerConfiguration class can be configured in spring 
to ignore specific view names:

    <bean
        
name="org.apache.myfaces.orchestra.conversation.AccessScopeManagerConfiguration"
        
class="org.apache.myfaces.orchestra.conversation.AccessScopeManagerConfiguration"
        scope="singleton">
   ... define set of views to ignore here ...
    </bean>

However currently this supports only fixed view names, not patterns like 
"*.xcss", so this doesn't help in your case.

The AccessScopePhaseListener does also ignore requests, however, if 
  AccessScopeManager.getInstance().setIgnoreRequest()
has been called. So I suggest that you add a phase-listener which just checks 
the current view-id, and if it ends with ".xcss" then set the ignoreRequest 
state on the AccessScopeManager. Note that this is just a request-scoped 
object, so there is no need to "reset" the state.

Regards,
Simon


See file spring-orchestra-init.xml within the orchestra jar for some further 
details.

The AccessScopePhaseLinstener.

Hmm..
So for now, you probably need to subclass the AccessScopeManager class itself, 


Reply via email to