In our application, many ajax requests are processed in the same session, sometimes causing conflicts when they update shared session information. I found synchronizing the logic within my event handlers to be useless since many components access shared objects from property bindings within the tml - outside of the scope of my synchronized block.

In order to combat this globally, I am considering synchronizing all component event requests on the session:

public static void contributeAjaxComponentEventRequestHandler(OrderedConfiguration<ComponentEventRequestFilter> configuration)
    {
configuration.addInstance("SessionSynch", SessionSynchFilter.class);
    }


public class SessionSynchFilterimplements ComponentEventRequestFilter
{
    @Inject
    private HttpServletRequest request;

    @Override
public void handle(ComponentEventRequestParameters parameters, ComponentEventRequestHandler handler) throws IOException
    {
        synchronized (request.getSession())
        {
            handler.handle(parameters);
        }
    }
}

Is this a crazy approach?

Thanks, Paul.

On 30/12/2011 3:43 PM,  Josh Canfield wrote:
unless you're dealing with concurrent requests to objects in a users
session. When you're dealing with shared resources, protecting them
from concurrent access is in the developers hands.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org

Reply via email to