I'm using seam 1.1beta2 (although the error occurs in 1.0.1.GA as well). I have 
defined some page actions to setup some virtual pages so that two different 
user types (standard and special) get redirected to a single sign-up page.

So, when a user goes to standardRegistration.faces they:
1. hit the virtualStandardRegistration page action method, which
2. creates a new User object and
3. redirects, via the returned jsf outcome, to memberRegistration.faces
4. which in turn calls the pageLoading method.

However, the stateful session bean invoked at step 1 is not the same as the 
stateful session bean invoked at 4. Consequently, the user object created at 
step 2 is null and it redirects back to standardRegistration and the whole 
process loops infinitely.

I should also mention there is another page action that checks the login 
credentials, but that method always returns the null outcome in this situation, 
so in theory it can be ignored.

Shouldn't these session beans be the same instance over the different 
invocations? If you need any more information, please let me know and I'll  
post what I can.

Cheers, Pete

pages.xml

  | <pages>
  |   <page view-id="/*" action="#{login.loginCheck}">Login Check</page>
  | 
  |   <page view-id="/standardRegistration.xhtml" 
action="#{memberDetailsManager.virtualStandardRegistration}">Standard 
Registration</page>
  | 
  |   <page view-id="/specialRegistration.xhtml" 
action="#{memberDetailsManager.virtualSpecialRegistration}">Special 
Registration</page>
  | 
  |   <page view-id="/memberRegistration.xhtml" 
action="#{memberDetailsManager.pageLoading}">Member Registration</page>
  | 
  | </pages>
  | 

faces-config.xml

  | ...
  |       <navigation-case>
  |         <from-outcome>standardRegistration</from-outcome>
  |         <to-view-id>/standardRegistration.xhtml</to-view-id>
  |         <redirect />
  |       </navigation-case>
  | 
  |       <navigation-case>
  |         <from-outcome>specialRegistration</from-outcome>
  |         <to-view-id>/specialRegistration.xhtml</to-view-id>
  |         <redirect />
  |       </navigation-case>
  | ...
  | 

MemberRegistration.java

  | @Stateful
  | @Scope(ScopeType.CONVERSATION)
  | @Name("memberDetailsManager")
  | @Intercept(InterceptionType.ALWAYS)
  | @TransactionAttribute(NOT_SUPPORTED)
  | public class MemberDetailsManagerAction implements MemberDetailsManager, 
Serializable {
  | ...
  |   @In(required=false)
  |   @Out(scope = ScopeType.CONVERSATION, required=false) // required = false 
due to Remoting
  |   private User memberDetails;
  | ...
  |   @Begin(join=true)
  |   public String virtualStandardRegistration() {
  |     String outcome = null ;
  |     if (isAlreadyRegistered()) {
  |       outcome = "memberDetails" ;
  |     } else {
  |       memberDetails = User.create(em, RoleType.Standard) ;
  |       newUser = true ;
  |       outcome = "memberRegistration" ;
  |     }
  | 
  |     return outcome ;
  |   }
  | 
  |   @Begin(join=true)
  |   @TransactionAttribute(REQUIRED)
  |   public String virtualSpecialRegistration() {
  |     String outcome = null ;
  |     if (isAlreadyRegistered()) {
  |       outcome = "memberDetails" ;
  |     } else {
  |       memberDetails = User.create(em, RoleType.Special) ;
  |       newUser = true ;
  |       outcome = "memberRegistration" ;
  |     }
  | 
  |     return outcome ;
  |   }
  | 
  |   public String pageLoading() {
  |     String outcome = null ;
  |     if (loggedInUser != null && memberDetails == null) {
  |       memberDetails = em.find(User.class, loggedInUser.getUserId()) ;
  |     }
  | 
  |     if (memberDetails == null) {
  |       outcome = "standardRegistration" ;
  |     }
  |     return outcome ;
  |   }
  | ...
  | 

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

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

Reply via email to