8 Replies Latest reply on Mar 19, 2007 10:34 AM by Juraj Holtak

    Conversation and Tree+Tab Layout with @End

    John Newbie

      Hello,

      I have been using Seam successfully for small-mid sized project. However, now the project requires the tree (using Apache Tree2 now) and tab interfaces (the tree is available on the left of the application all the time, so are the tabs from the top).

      So the QUESTION is: how will one implement using stateless or stateful or just simply Seam + POJO so that the @End of the component will be called, somehow, to cut down the run-away conversation and to end it. Otherwise, one has to implement @Begin(join=true) so no errors occur but doing this is not healty for an app server.

      Remember that the tree and the tab are exposed on the application interface all the time so users may tempt to click on them while in long running conversation form? Is it a limit of Seam??? Please share your thought otherwise this seems to be a limition of Seam. A nice example is greatly helpful.

      Thank you

        • 1. Re: Conversation and Tree+Tab Layout with @End
          Gavin King Master

          I'll be putting together an example of Seam + the RichFaces tree control soon. Stay tuned.

          • 2. Re: Conversation and Tree+Tab Layout with @End
            Pete Muir Master

             

            "app4you@yahoo.com" wrote:
            somehow, to cut down the run-away conversation and to end it. Otherwise, one has to implement @Begin(join=true) so no errors occur but doing this is not healthy for an app server.


            AFAIK there is nothing wrong in "health" terms with @Begin(join="true")/allowing conversations to timeout (rather than explicitly ending them) - what do you see as the issue?

            Of course, it may not be the best way to do it architecturally... If the tabs and tree are there for the entire user session, perhaps they should go in the session (you could consider doing any persistence work in the current conversation to avoid LIEs, but keep the state in a session)?

            • 3. Re: Conversation and Tree+Tab Layout with @End
              Tony Herstell Master

              I have a menu component that the user can click any time, even in a long running conversation.
              This leaves an orphaned conversation which can be seen in the conversation picker and gone back to at a later date.
              If the user never does then the conversation times out and is auto cleaned up...

              Some gotchas.. you go to set various timeouts and stuff to stop getting exceptions in the logs... I can post them if you are interested.

              Go here to view it working.. http://gaming.homeip.net:8080/risingstars (slow as my dev pc at home).
              .. Ah, well you could see the conversation picker if the conversation picker was working... this stopped in the latest release!
              humm..

              • 4. Re: Conversation and Tree+Tab Layout with @End
                Tony Herstell Master

                in pages.xml

                <pages no-conversation-view-id="/mainmenu.xhtml">
                 <page view-id="/userCRUD.xhtml" timeout="300000">
                 Reason: #{cRUDUserController.mode} User ( #{user.username} )
                 </page>
                 <page view-id="/userConfirm.xhtml" timeout="300000">
                 Reason: Confirm #{cRUDUserController.mode} User
                 (#{user.username} )
                 </page>
                 <page view-id="/userRegistration.xhtml" timeout="300000">
                 Reason: Registration of new User
                 </page>
                
                 <page view-id="/organisationCRUD.xhtml" timeout="300000">
                 Reason: #{cRUDOrganisationController.mode} Organisation (
                 #{organisation.name} )
                 </page>
                 <page view-id="/organisationConfirm.xhtml" timeout="300000">
                 Reason: Confirm #{cRUDOrganisationController.mode} Organisation
                 (#{organisation.name} )
                 </page>
                
                 <page view-id="/upload.xhtml" timeout="300000">
                 Reason: Upload Image
                 </page>
                


                @CacheConfig(idleTimeoutSeconds=1800)
                @Stateful
                @Name("findOrganisationController")
                @Scope(ScopeType.SESSION)
                



                web.xml
                 <session-config>
                 <session-timeout>15</session-timeout>
                 </session-config>
                


                It would take one of the main guys to explain properly what they do... I just added them as I was told to by Gavin. I don't think its in the Doco anywhere.

                Summat about it timing after after the default session timeout in JBoss

                :?

                :/

                • 5. Re: Conversation and Tree+Tab Layout with @End
                  John Newbie

                  Hello,

                  Yes, I have successfully implemented the tree + tab with Seam very sucessfully but please let me explain a bit more so that we can make the application more realistic and interesting using Seam + AJAX4JSF.

                  Like petemuir said, the tree is in session scope and the application module is in conversation. However, the application's edit mode is required to be in the edit mode all time, no matter how many times the Save/Update button got clicked until the user clicks on the Done button explicitly to end and redirect to the main search screen, which its action method got annotated with the @End @Remove.

                  Now the critical question I would like to ask: If user clicks on the tree item to get back to the module search screen instead of clicking on the Done button to end the conversation properly, will there be performance issue involved or will there be collision somewhere along the way? Assume that the application has a lot of modules that being are used simultaneously by an end user within an hour time frame. Also, Gavin suggested a while ago that we can set the conversation timeout the same as the HTTP session timeout and that's what I am using, 30 minutes :). So within 30 minutes and alot of un-ended conversations going on, is it OK? I can use PULL technique but not really elegant.

                  This is a very common use case in everyday and I hope someone, Gavin or petemuir, to shed some light on.

                  Thank you for replying to my question.

                  • 6. Re: Conversation and Tree+Tab Layout with @End
                    Gavin King Master

                    30 minutes seems like a long time. I would set a much shorter conversation timeout than that.

                    • 7. Re: Conversation and Tree+Tab Layout with @End
                      John Newbie

                      Hello,

                      I did implement a shorter conversation timeout and redirect but that will break the 30 minute timeout requirement. We don't want to end the form conversation while user is being idle in 4-5 minutes while looking up the info from other inputs.

                      Any advise on the @End or how to close or reduce the conversation(s) properly when using @Begin(join=true) with the tree and tab interfaces?

                      Thank you.

                      • 8. Re: Conversation and Tree+Tab Layout with @End
                        Juraj Holtak Newbie

                        hello,

                        I`m in the same situation. I`m using tree2 from Tomahawk and the tree is all time visible on the page, so the user can click any node. The conversation will not be finished and must timeout. My conversation timeout is 2 minutes. My session timeout is 10 hours and my SFSB timeout is 10 hours + some minutes. This actually works pretty well and I`m able to continue using my webapp after 9 hours sleep (tested) without re-login or any problems.

                        A RichFaces tree example would be great.