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.




    Concurrent access to the underlying servlet request and response.




    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




    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