cocoon-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Nicolas Bielza" <nicolas.bie...@alligacom.com>
Subject RE: Flow + Hibernate and lazy initialization
Date Thu, 10 Jun 2004 17:37:39 GMT
Well, when I say that they "work", I mean that they are interpreted and
not ignored. I'm not sure that they actually "work", since they don't
seem to wait for the view to be rendered. (but maybe this is by
design..)

-----Original Message-----
From: Nicolas Bielza [mailto:nicolas.bielza@alligacom.com] 
Sent: 10 juin, 2004 13:32
To: users@cocoon.apache.org
Subject: RE: Flow + Hibernate and lazy initialization


No, sendPageAndWait() does this. I think maybe catch(return) and the
postpipeline function are the same thing. Anyway I tested both and they
only work when using sendPageAndWait(), that is, when a continuation
object is created. (This is consistent with the doc).

Nicolas.

-----Original Message-----
From: Upayavira [mailto:uv@upaya.co.uk] 
Sent: 10 juin, 2004 13:19
To: users@cocoon.apache.org
Subject: Re: Flow + Hibernate and lazy initialization


Nicolas Bielza wrote:

>I tried to use the catch(return) trick but it doesn't seem to work.
>(I'm using cocoon 2.1.4)
>  
>
Never used it, but - doesn't the cocoon.sendPage("url", {"foo":foo}, 
function(){hibernateSession.close();});
syntax do this?

Upayavira

>I added some log messages in the flowscript and it seems that the
>catch(return) is not executed when I call sendPage() (the script
>debugger also exposed this, and after a while, I started to see some 
>warnings about unclosed sessions...).
>
>I tried with sendPageAndWait() and this time the catch(return) got
>executed, but it was called before the pipeline completed: I still had 
>lazy initialization exceptions during pipeline processing.
>
>I also tried to close the session in the postpipeline code (when using
>sendPageAndWait()) and again, the session was closed before pipeline
>completed.
>
>Here's an example flowscript (I'm not closing the session here, just
>logging) :
>
>try {
>
>  // ...
>
>  var list = query.list();
>  cocoon.log.error("I'm about to call cocoon.sendPageAndWait()");
>  cocoon.sendPageAndWait("report.vm", {"list" : new HashSet(list)},
>function() { cocoon.log.error("I'm in postpipeline code"); }, 0);
>  catch(return) {
>    cocoon.log.error("I'm inside catch(return)");
>  }
>}
>finally {
>  cocoon.log.error("I'm inside finally block");
>  //clean up
>  cocoon.releaseComponent(hibernateFactory);
>}
>
>
>Now, here's the console output:
>
>Hibernate: select introspecd0_.id as id, introspecd0_.envelop as
>envelop, introspecd0_.reference as reference, 
>introspecd0_.tradingPartner as tradingP4_, introspecd0_.docType as 
>docType from Introspec_Document introspecd0_ inner join 
>Introspec_History statushist1_ on introspecd0_.id=statushist1_.docId
>Hibernate: select introspecd0_.id as id0_, introspecd0_.name as name0_ 
>from Introspec_DocType introspecd0_ where introspecd0_.id=?
>ERROR   2004-06-10 12:14:29.561 [flow    ] (): I'm about to call
>cocoon.sendPageAndWait()
>ERROR   2004-06-10 12:14:29.632 [flow    ] (): I'm in postpipeline code
>ERROR   2004-06-10 12:14:29.632 [flow    ] (): I'm inside catch(return)
>Hibernate: select statushist0_.status as status__, statushist0_.date as

>date__, statushist0_.docId as docId__ from Introspec_History
>statushist0_ where statushist0_.docId=? order by statushist0_.date desc
>Hibernate: select introspecs0_.id as id0_, introspecs0_.code as code0_ 
>from Introspec_Status introspecs0_ where introspecs0_.id=?
>Hibernate: select statushist0_.status as status__, statushist0_.date as

>date__, statushist0_.docId as docId__ from Introspec_History
>statushist0_ where statushist0_.docId=? order by statushist0_.date desc
>Hibernate: select statushist0_.status as status__, statushist0_.date as

>date__, statushist0_.docId as docId__ from Introspec_History
>statushist0_ where statushist0_.docId=? order by statushist0_.date desc
>Hibernate: select statushist0_.status as status__, statushist0_.date as

>date__, statushist0_.docId as docId__ from Introspec_History
>statushist0_ where statushist0_.docId=? order by statushist0_.date desc
>Hibernate: select statushist0_.status as status__, statushist0_.date as

>date__, statushist0_.docId as docId__ from Introspec_History
>statushist0_ where statushist0_.docId=? order by statushist0_.date desc
>Hibernate: select statushist0_.status as status__, statushist0_.date as

>date__, statushist0_.docId as docId__ from Introspec_History
>statushist0_ where statushist0_.docId=? order by statushist0_.date desc
>Hibernate: select statushist0_.status as status__, statushist0_.date as

>date__, statushist0_.docId as docId__ from Introspec_History
>statushist0_ where statushist0_.docId=? order by statushist0_.date desc
>Hibernate: select statushist0_.status as status__, statushist0_.date as

>date__, statushist0_.docId as docId__ from Introspec_History
>statushist0_ where statushist0_.docId=? order by statushist0_.date desc
>Hibernate: select statushist0_.status as status__, statushist0_.date as

>date__, statushist0_.docId as docId__ from Introspec_History
>statushist0_ where statushist0_.docId=? order by statushist0_.date desc
>
>You can clearly see the hibernate request being executed after passing
>through both postpipeline and catch(return) blocks.
>
>Looking back at
>http://wiki.cocoondev.org/Wiki.jsp?page=RhinoWithContinuations, it 
>seems obvious that catch(return) is only used with continuation objects

>so it's ignored when calling sendPage().
>
>But I think this is quite ambiguous:
>
>  
>
>>If you want to execute Flowscript code after calling the view layer
>>but
>>    
>>
>before control
>  
>
>>leaves the interpreter, catch(return) will help
>>    
>>
>
>If "after calling the view layer" means "just after calling the view
>layer, but before it's completed", I can't see any use for this 
>feature.
>
>So far, it looks like there's no way to know when the view pipeline is
>completed, maybe this is to avoid problems if the view "re-entered" the

>flow (just guessing) ?
>
>Finally, I'd like to know if anyone can confirm what I'm reporting (I'm

>running in a minimal cocoon environment and it's not impossible that I
>removed some needed components...) ?
>
>Thanks,
>
>Nicolas.
>
>
>-----Original Message-----
>From: Leszek Gawron [mailto:lgawron@mobilebox.pl]
>Sent: 10 juin, 2004 05:37
>To: users@cocoon.apache.org
>Subject: Re: Flow + Hibernate and lazy initialization
>
>
>Leszek Gawron wrote:
>  
>
>>>Well, I cannot see why the releasing cannot be done in the Javascript

>>>statement following the sendPage... assuming the behaviour you
>>>observed was not just a bug in the Flowscript component, of course.
>>>      
>>>
>>If this is as you say you should raise this problem at cocoon-dev. I
>>also wanted to loose Open Session In View pattern in favor of some 
>>hibernate avalon component, but that looks impossible now.
>>    
>>
>See this[1], and this[2] and this[3] and this[4]
>
>[1] http://marc.theaimsgroup.com/?t=108681937800001&r=1&w=2&n=2
>[2]
>http://marc.theaimsgroup.com/?l=xml-cocoon-dev&m=105825181219265&w=2
>[3]
http://marc.theaimsgroup.com/?l=xml-cocoon-dev&m=105825410721036&w=2
>[4] http://wiki.cocoondev.org/Wiki.jsp?page=RhinoWithContinuations
>	LG
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
>For additional commands, e-mail: users-help@cocoon.apache.org
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
>For additional commands, e-mail: users-help@cocoon.apache.org
>
>
>  
>



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Mime
View raw message