Just a followup from my adventures with 
http://www.jboss.com/index.html?module=bb&op=viewtopic&t=90169.  My root 
problem turned out to be the Seam practice of redirecting to the displayed page 
when you return the page itself from your action (see below).  My reading of 
the reference manual led me to believe that Seam passed ALL of the contextual 
information to the view, even when there was a redirect.  While it didn't 
really make sense to me that request (EVENT scope) data would survive a 
redirect, I had concluded that Seam was doing some sort of magic to accomplish 
this.  I have now concluded that I was wrong.

I was returning the actual view path from my action methods, like 
"/Document.xhtml".  As mentioned in the manual, this does a redirect to the 
page.  Because of that, the only data that gets preserved is the stuff stored 
in the session or application context (including long running conversations).

I imagine most of you are saying "well, duh" about now, but I really did 
believe that Seam was magically taking care of all this!  And the Seam examples 
reinforced my beliefs simply because they tend to promote the Conversation 
feature of Seam, which stores stuff in the Session, or provide stateless 
actions with SESSION scoped beans.

Anyway, the solution for me was to define "navigation-case" entries for my 
pages WITHOUT the "redirect" tag included, like this:

    
  |     <navigation-rule>
  |         <navigation-case>
  |             <from-outcome>document</from-outcome>
  |             <to-view-id>/Document.xhtml</to-view-id>
  |         </navigation-case>
  |     </navigation-rule>

I love the conversation idea for things like editing data, where there's a well 
defined entry and one or more exit points to a workflow.  However, most of the 
rest of my app is made up of "open ended" conversations.  Many requests are a 
typical example of an old CMP style request, where there is no need to store 
state between requests, and it's impractical to do so because of memory usage 
on the server.  Maybe this is a reflection of imposing the old architecture, 
but for the most part the workflow is driven by business requirements.

Now that I understand more of the details of how scope works (and have stumbled 
over the obvious fact that redirects wipe out a lot of state), I can easily mix 
SESSION, EVENT, and CONVERSATION scoped objects and actions into my app.

In terms of the reference manual, I would like to request the following:

1. Add a new example (or revamp an existing one) to highlight the "mostly 
stateless" situation, where an incoming request (maybe with a request variable) 
triggers a database query and the results are passed to the view, without any 
SESSION or CONVERSATION scoped objects.  There may already be an example of 
this in the existing code, but I couldn't find it.  There was always either a 
conversation involved or the bean that was returned had SESSION scope.

2. Add more description around the scope types.
a. Make it clear that EVENT scope doesn't survive a redirect (even though that 
should have been obvious to me).
b. Explain the difference between CONVERSATION scope while you're IN a 
conversation, vs. when you're not [when you're not, it also doesn't seem to 
survive the redirect, since the implicit conversation wasn't long running].
c. Explain what PAGE scope is and what it does, maybe with examples.  The 
description itself doesn't tell me how to USE this scope, or how it differs 
from other scopes.

3. Describe the relationship between an action's scope and the use an extended 
persistence context.
a. What are the requirements on action scope (I assume you need a long running 
conversation or possibly session scope)
b. What are the advantages of the extended persistence context?  Maybe it's 
just a performance optimization, but it seems like it's no different that 
executing "em.merge" with the entity bean.
c. What are the consequences of using an extended persistence context?  Does it 
keep a JDBC connection open?  (I assume not.)  What happens if the action's 
context expires?



View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3970805#3970805

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3970805
_______________________________________________
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to