You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geronimo.apache.org by David Jencks <da...@coredevelopers.net> on 2003/12/06 21:08:22 UTC

interaction of connector framework with interceptor chains

I'm refactoring the outbound ConnectionManager framework to reduce the 
number of synchronization blocks needed.  In order to do this the 
connector framework needs to rely on some services to be provided by 
the interceptor chain framework for the objects using the connections.

These dependencies are:

1. Keeping track of which connection handles are held by which object.  
This can be done by storing them in the ejb instance context-like 
object.

2. Keeping track of which managed connections are enrolled in which 
transaction.  This can be done by storing them in a transaction 
context-like object.

This would be completely straightforward if Geronimo only supported one 
style of interceptor chain, as I could simply code the functionality in 
to it.

However, Geronimo is supposed to support multiple ejb containers (as 
well as other things), and the current ejb container is not even part 
of Geronimo.

So, what I'm doing so far is to define interfaces for the support the 
connector framework needs from the interceptor chain framework, and to 
provide a "default" implementation in geronimo to show what needs to 
happen inside the interceptor chain framework (and possibly provide for 
implementation by delegation in a real interceptor chain framework).

I'll then implement these interfaces in the OpenEJB Nova interceptor 
chain framework.  This will have the effect of tying the OpenEJB Nova 
interceptor chain framework into the Geronimo connection management 
framework unless we find a way to customize the creation of interceptor 
stacks in Nova.

I realize it's probably unclear what I'm talking about without seeing 
the code, but I wanted to at least mention my approach in case there 
are strong objections or other ideas on how to proceed.

There will still be one (or two) synchronized block in the pooling 
code, when it is necessary to get a managed connection out of the pool 
(or put it back).  I don't know how to eliminate this, if anyone does 
please let me know.  This should normally occur only once per 
transaction, however.

Thanks
david jencks


Re: interaction of connector framework with interceptor chains

Posted by David Jencks <da...@coredevelopers.net>.
I've committed this work, in both Geronimo and Nova, and would welcome 
comments.

It is very likely that these changes break using connections from 
servlets/jsps inside a UserTransaction.
I'm considering various possible solutions for this.

thanks
david jencks

On Saturday, December 6, 2003, at 12:08 PM, David Jencks wrote:

> I'm refactoring the outbound ConnectionManager framework to reduce the 
> number of synchronization blocks needed.  In order to do this the 
> connector framework needs to rely on some services to be provided by 
> the interceptor chain framework for the objects using the connections.
>
> These dependencies are:
>
> 1. Keeping track of which connection handles are held by which object. 
>  This can be done by storing them in the ejb instance context-like 
> object.
>
> 2. Keeping track of which managed connections are enrolled in which 
> transaction.  This can be done by storing them in a transaction 
> context-like object.
>
> This would be completely straightforward if Geronimo only supported 
> one style of interceptor chain, as I could simply code the 
> functionality in to it.
>
> However, Geronimo is supposed to support multiple ejb containers (as 
> well as other things), and the current ejb container is not even part 
> of Geronimo.
>
> So, what I'm doing so far is to define interfaces for the support the 
> connector framework needs from the interceptor chain framework, and to 
> provide a "default" implementation in geronimo to show what needs to 
> happen inside the interceptor chain framework (and possibly provide 
> for implementation by delegation in a real interceptor chain 
> framework).
>
> I'll then implement these interfaces in the OpenEJB Nova interceptor 
> chain framework.  This will have the effect of tying the OpenEJB Nova 
> interceptor chain framework into the Geronimo connection management 
> framework unless we find a way to customize the creation of 
> interceptor stacks in Nova.
>
> I realize it's probably unclear what I'm talking about without seeing 
> the code, but I wanted to at least mention my approach in case there 
> are strong objections or other ideas on how to proceed.
>
> There will still be one (or two) synchronized block in the pooling 
> code, when it is necessary to get a managed connection out of the pool 
> (or put it back).  I don't know how to eliminate this, if anyone does 
> please let me know.  This should normally occur only once per 
> transaction, however.
>
> Thanks
> david jencks
>