[Yanel-dev] [Fwd: Re: Session Handling in WebApplication]

Michael Wechner michael.wechner at wyona.com
Tue Sep 9 11:08:37 CEST 2008


Hi

Yes, at some point we should also change this within Yarep/Yanel

"Session Handling -- a JCR session is obtained by providing credentials 
to the Repository implementation. Also, the methods on it are not 
thread-safe. The easiest approach for using in a Web Application thus is 
to instantiate a new JCR session for each HTTP request. This is also the 
approach used by the Jackrabbit WebDAV servlet. It is not expected that 
this affects performance negatively; session instatiation should be 
cheap. If this assumption turns out to be wrong, session pooling should 
be considered."

Cheers

Michi


-------- Original-Nachricht --------
Betreff: 	Re: Session Handling in WebApplication
Datum: 	Tue, 9 Sep 2008 09:38:30 +0200
Von: 	Alexander Klimetschek <aklimets at day.com>
Antwort an: 	users at jackrabbit.apache.org
An: 	users at jackrabbit.apache.org
Referenzen: 	<0E46E3619326224CB40CC30C2E36364E038F8DA1 at zde008.lenze.com>



Hi,

Michael's answer is right, typically you bound one session to one
request. Creating a session, especially with an embedded repository,
is very fast. But note that there is no automatic mechanism against
concurrent changes from two parallel sessions. Normally the second
update wins (if there is no conflict). You can use locking for
synchronization or versioning (see the JCR spec [1]). And in most
cases, a clear content structure [2] will help in avoiding conflicts
in most cases.

Regards,
Alex

[1] http://jcp.org/en/jsr/detail?id=170
[2] http://wiki.apache.org/jackrabbit/DavidsModel

On Tue, Sep 9, 2008 at 7:35 AM, Krohne, Frank - ENCOWAY
<krohne at encoway.de> wrote:
> Hi,
>
>
>
> we are developing web applications and now want to use jackrabbit as
> contend repository.
>
>
>
> So the question is, what is the preferred way to handle the jackrabbit
> sessions in an web application.
>
> When to open a new session and when to close the session and when to
> write (save) contend to it and to be sure other users don't have
> modified the nodes another user is modifying at the moment?
>
> Should we open a new session on every request or share a session on the
> same http session?
>
> Are the jackrabbit sessions thread safe?
>
> If we bind the sessions to our own users (self implemented user
> management) what is the best way to know when to close the jackrabbit
> session if the user doesn't log out or has multiple http sessions open?
>
>
>
> So we are new to jackrabbit and the docs about are rare to this topic (I
> think).
>
>
>
> It would be great to get some hints or tips on how to handle jackrabbit
> sessions in a web application.
>
>
>
> Thanks in advance
>
>
>
> Frank
>
>



-- 
Alexander Klimetschek
alexander.klimetschek at day.com



More information about the Yanel-development mailing list