Hi,

On 11/21/06, Jukka Zitting <[EMAIL PROTECTED]> wrote:
> What do you think about storing the jcr session in the servlet session
> and use a requestlistener to synchronize the access to the jcr session?.
> On each request a lock would be acquired on the jcr session and released
> only when the request is over. This wouldn't allow two request to access
> the session simultaneously.

Sounds good. A Filter like the following is in fact probably the
easiest way to achieve synchronization:

    public void doFilter(
            ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        HttpSession httpSession = ((HttpServletRequest) request).getSession();
        Session jcrSession = httpSession.getAttribute(SESSION_KEY);
        synchronized (jcrSession) {
            request.setAttribute(SESSION_KEY, jcrSession);
            try {
                chain.doFilter(request, response);
            } finally {
                request.removeAttribute(SESSION_KEY);
            }
        }
    }

Perhaps this could be combined with the current LoginFilter functionality?


good idea!, I was thinking in a requestlistener, but a servlet filter
seems a better way. I'll try it asap.

br,
edgar

BR,

Jukka Zitting

Reply via email to