Version 2

    It applies mainly during page rendering request.

     

    Technical challenges

     

    Transaction assemblies

     

    So far a transaction is started by the server at the beginning of the request and is suspended before entering a portlet and resumed after. When the portal request terminates then the transaction is terminated.

     

    Concurrency

     

    Concurrent access to the underlying servlet request and response.

     

    Architecture

     

    Transaction assemblies

     

    1. Start the transaction at the server request level

    2. During the page render

      1. Gather all windows of the page to render

      2. For each window get a thread to execute its rendering

      3. Wait all responses and aggregate the result

    3. Ends the transaction at the server request level

     

    Concurrency

     

    One possible solution is to make a snapshot of the environment, each concurrent request would work with a snapshot of the request attributes and the session attributes of the dispatched portlets. At the end of the whole request there would be a merging phase.

     

    Todo : define clearly what we can do and how

     

    Additional information

     

    1. Each window will be rendered using its own transaction that will load the data it needs (user profile and preferences mainly).

    2. Define a timeout in order to discard a result that would not be obtained within a specified amount of time