[jbossseam-issues] [JBoss JIRA] Closed: (JBSEAM-3041) Conversation mixup between CommentHome instances

Christian Bauer (JIRA) jira-events at lists.jboss.org
Tue May 27 02:27:42 EDT 2008


     [ http://jira.jboss.com/jira/browse/JBSEAM-3041?page=all ]

Christian Bauer closed JBSEAM-3041.
-----------------------------------

    Resolution: Won't Fix

This was simply misconfiguration:

    <context-param>
        <param-name>com.sun.faces.numberOfViewsInSession</param-name>
        <param-value>3</param-value>
    </context-param>

    <context-param>
        <param-name>com.sun.faces.numberOfLogicalViews</param-name>
        <param-value>3</param-value>
    </context-param>

Do NOT set these numbers to these low values (default is 15/15). If I'd still have the patience with this JSF crap, I'd actually try to make sense of this and find out why state is mixed up when these LRU caches expire. That should be an error, but it is not. 

The official explanation of these parameters is not much help in this regard: http://wiki.glassfish.java.net/Wiki.jsp?page=JavaServerFacesRI

Finally, there is a much deeper, fundamental JSF design issue hidden here:

A search engine robot follows every hyperlink with a GET request (hurray for Google, who are crazy enough to soon start submitting random POST requests). Let's say you want to put a "Post a comment" button on your website. Do you do this with a GET or POST request?

If you use JSF and <s:link> you will have a URI with an actionMethod=postComment parameter. The search engine robots will follow it and index your comment form page. Worse, they will do that over and over again, because conversation identifiers change (and you need them for this kind of form handling, unless you want to do everything in PAGE context). This is no good, obviously a POST would be better to start this conversation.

If you use JSF and <h:commandButton> you get a little form with a "Post Comment" submit button, all send to to server with a POST requests. The search engine robot will no longer follow this URI and index your comment form page. However, you have just wasted one of the precious "logical views" in JSF server-side state saving. Suppose someone opens more than 15 tabs in the browser, and each of these has a page with a "Post Comment" button/form. You are now over the limit of logical views configured in web.xml. What happens when tab number 16 is opened? The "least recently used" item from the server-side state cache is expired, that means tab number 1 now contains a "Post Comment" button/form that will no longer work. What happens if you click it? Undefined...




> Conversation mixup between CommentHome instances
> ------------------------------------------------
>
>                 Key: JBSEAM-3041
>                 URL: http://jira.jboss.com/jira/browse/JBSEAM-3041
>             Project: Seam
>          Issue Type: Bug
>          Components: Wiki
>            Reporter: Christian Bauer
>         Assigned To: Christian Bauer
>            Priority: Blocker
>
> "I opened multiple different threads in separate tabs. Replied to the first one, (Saved there). Then when clicking on reply in the second tab the page was replaced by a reply-page for the first thread."

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the seam-issues mailing list