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