You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cocoon.apache.org by Robin Wyles <ro...@robinwyles.com> on 2007/12/08 15:56:55 UTC

C2.2 and OpenSessionInViewInterceptor

Hi,

I would like to implement something similar to Spring's  
OpenSessionInViewInterceptor [1] in Cocoon 2.2 - the idea being to  
open a Hibernate session when specific pipelines are called, binding  
it to the current thread and then closing it when the pipeline  
execution (and therefore the view) has finished. I know I could use  
the OpenSessionInViewFilter [2], but the URL mapping is unwieldy and  
is not fine grained enough for my needs, and I'm not even sure if the  
filter would be called when pipelines are called by other blocks  
(anyone know?).

My first idea was to extend one of the existing pipeline  
implementations but it seems this won't work for pipelines that  
include calls to flowscript functions as these are handled before the  
pipeline is set up. Ideally I would like to enable this functionality  
for specific pipelines, so if anyone has any ideas about how I could  
go about implementing this I'd love to hear it!

Thanks,

Robin


[1] http://static.springframework.org/spring/docs/2.0.6/api/org/ 
springframework/orm/hibernate3/support/OpenSessionInViewInterceptor.html
[2] http://static.springframework.org/spring/docs/2.0.6/api/org/ 
springframework/orm/hibernate3/support/OpenSessionInViewFilter.html

Re: C2.2 and OpenSessionInViewInterceptor

Posted by Robin Wyles <ro...@robinwyles.com>.
Thanks Carsten, this is just what I needed.

I couldn't find any documentation or any examples of this in use, so  
if anyone else is interested this is what you need to do to register  
a sitemap listener...

1. Create a class implementing  
org.apache.cocoon.sitemap.EnterSitemapEventListener and/or  
org.apache.cocoon.sitemap.LeaveSitemapEventListener

2. Define it as a spring bean in a file at config/spring/*.xml  
relative to your sitemap, so at COB-INF/config/spring/*.xml if you  
want the listener registered with a block's default sitemap. The  
relative path is important as the listener must be bound to a  
specific sitemap. Therefore if you want to attach your listener to a  
sub-sitemap you must put your sub-sitemap in its own directory and  
put the spring config relative to that.

3. That's it, all requests to that sitemap will fire the registered  
listeners.

Robin


On 10 Dec 2007, at 13:10, Carsten Ziegeler wrote:

> Robin Wyles wrote:
>> Hi,
>>
>> I would like to implement something similar to Spring's
>> OpenSessionInViewInterceptor [1] in Cocoon 2.2 - the idea being to  
>> open
>> a Hibernate session when specific pipelines are called, binding it to
>> the current thread and then closing it when the pipeline execution  
>> (and
>> therefore the view) has finished. I know I could use the
>> OpenSessionInViewFilter [2], but the URL mapping is unwieldy and  
>> is not
>> fine grained enough for my needs, and I'm not even sure if the filter
>> would be called when pipelines are called by other blocks (anyone  
>> know?).
>>
>> My first idea was to extend one of the existing pipeline  
>> implementations
>> but it seems this won't work for pipelines that include calls to
>> flowscript functions as these are handled before the pipeline is  
>> set up.
>> Ideally I would like to enable this functionality for specific
>> pipelines, so if anyone has any ideas about how I could go about
>> implementing this I'd love to hear it!
>>
> I can't give the details, but we added sitemap listeners for things  
> like
> these. Basically, you can register a listener for a specific  
> sitemap and
> this is notified when the whole request has been processed by Cocoon -
> so you can clean up afterwards.
>
> Carsten
>
>> Thanks,
>>
>> Robin
>>
>>
>> [1]
>> http://static.springframework.org/spring/docs/2.0.6/api/org/ 
>> springframework/orm/hibernate3/support/ 
>> OpenSessionInViewInterceptor.html
>>
>> [2]
>> http://static.springframework.org/spring/docs/2.0.6/api/org/ 
>> springframework/orm/hibernate3/support/OpenSessionInViewFilter.html
>
>
> -- 
> Carsten Ziegeler
> cziegeler@apache.org
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
> For additional commands, e-mail: users-help@cocoon.apache.org
>


Re: C2.2 and OpenSessionInViewInterceptor

Posted by Carsten Ziegeler <cz...@apache.org>.
Robin Wyles wrote:
> Hi,
> 
> I would like to implement something similar to Spring's
> OpenSessionInViewInterceptor [1] in Cocoon 2.2 - the idea being to open
> a Hibernate session when specific pipelines are called, binding it to
> the current thread and then closing it when the pipeline execution (and
> therefore the view) has finished. I know I could use the
> OpenSessionInViewFilter [2], but the URL mapping is unwieldy and is not
> fine grained enough for my needs, and I'm not even sure if the filter
> would be called when pipelines are called by other blocks (anyone know?).
> 
> My first idea was to extend one of the existing pipeline implementations
> but it seems this won't work for pipelines that include calls to
> flowscript functions as these are handled before the pipeline is set up.
> Ideally I would like to enable this functionality for specific
> pipelines, so if anyone has any ideas about how I could go about
> implementing this I'd love to hear it!
> 
I can't give the details, but we added sitemap listeners for things like
these. Basically, you can register a listener for a specific sitemap and
this is notified when the whole request has been processed by Cocoon -
so you can clean up afterwards.

Carsten

> Thanks,
> 
> Robin
> 
> 
> [1]
> http://static.springframework.org/spring/docs/2.0.6/api/org/springframework/orm/hibernate3/support/OpenSessionInViewInterceptor.html
> 
> [2]
> http://static.springframework.org/spring/docs/2.0.6/api/org/springframework/orm/hibernate3/support/OpenSessionInViewFilter.html


-- 
Carsten Ziegeler
cziegeler@apache.org

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