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
Start the transaction at the server request level
During the page render
Gather all windows of the page to render
For each window get a thread to execute its rendering
Wait all responses and aggregate the result
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
Each window will be rendered using its own transaction that will load the data it needs (user profile and preferences mainly).
Define a timeout in order to discard a result that would not be obtained within a specified amount of time
Comments