From: Christopher Oliver [mailto:[EMAIL PROTECTED]
> Reinhard P�tz wrote:
>
> >From: Jeremy Quinn
> >
> >
> >
> >>What I do not grok ATM, how does the Hibernate Session automatically
> >>get closed at the appropriate time (ie. after the view layer has
> >>completed)?
> >>
> >>
> >
> >IIU the current flow implementation correctly you have no
> chance but to
> >use lazy initializiation as implemented by you because after reaching
> >sendPageAndWait() the flow interpreter has no chance to
> react. Maybe we
> >need something like a "finalize" in pipeline processing where those
> >things (releasing of components) are done.
> >
> >HTH
> >Reinhard
> >
> >
> >
> >
> Actually, although not particularly user-friendly, there is a
> way to do
> this, even now, with the extended "catch" syntax supported by Rhino
> (which is intended to provide functionality similar to
> "dynamic-wind" in
> Scheme):
>
>
> var hibSession = null;
>
> function getSession() {
> if (hibSession == null) {
> hibSession = cocoon.getComponent("hibernateSession");
> }
> }
>
> function releaseSession() {
> if (hibSession != null) {
> cocoon.releaseComponent(hibSession);
> hibSession = null;
> }
> }
>
> catch (break) {
> // a continuation is being captured,
> // code to handle that goes here
> releaseSession();
> }
... and this is called after the pipeline has been processed? How is
this possible from a technical POV? If the view layer is called by
sendPageAndWait the flow interpreter isn't active until the response
returns from the client (map:call continuation="...").
Reinhard
>
> catch (continue) {
> // a continuation is being restored
> // code to handle that goes here
> }
>
> function myFlow() {
> var custBean = getSession().blah;
> sendPageAndWait("cust.xml", custBean);
> var anotherBean = getSession().blahblah
> }
>