If you want to decorate the calls to the pooled objects, then use commons
proxy and a delegator proxy. Let's not bleed into other areas. Let pool
concentrate on what it does best.
On Sun, Aug 9, 2015 at 11:45 AM James Carman <ja...@carmanconsulting.com>
wrote:

> I lean toward listeners instead. Much simpler
> On Sun, Aug 9, 2015 at 11:35 AM Phil Steitz <phil.ste...@gmail.com> wrote:
>
>> On 8/9/15 8:07 AM, Oliver Heger wrote:
>> >
>> >
>> > On 09.08.2015 02:49, James Carman wrote:
>> >> Yep, same thing I said back in the day. Would we want it to be a
>> >> true
>> >> "interceptor" or more of a "listener"?
>> >
>> > Sounds like a usual and interesting feature. IIUC the proposal of
>> > Phil, it goes more in the direction of interceptors.
>> >
>> > A point to keep in mind is how does this feature impact
>> > synchronization? Can interceptors be invoked outside of
>> > synchronized blocks? Otherwise, there is a certain risk of
>> > introducing subtle bugs. Bloch calls this "calling an alien method
>> > with a lock held".
>>
>> Thanks, Oliver and very good point on synchronization.  This would
>> require care.  The nice thing about pool2 is that we have vastly
>> reduced the scope of synchronization.  Most importantly (actually
>> since about pool 1.5), factory methods are all outside of sync
>> blocks and no locks are held on objects checked out by the pool
>> [1].  That said, we would need to be careful not to create liveness
>> or performance issues and we would have to provide good
>> documentation on things to look out for when implementing interceptors.
>>
>> Phil
>>
>> [1] The pool maintenance thread and borrow / return operations do
>> acquire locks on the PooledObject wrappers used by the pool, but not
>> on the objects that the interceptors would be working with.
>> Thread-safety of pool methods should ensure that use of pool
>> references in interceptors would also be safe.
>>
>>
>> >
>> > My 2 cents
>> > Oliver
>> >
>> >>
>> >> On Sat, Aug 8, 2015 at 8:18 PM Phil Steitz
>> >> <phil.ste...@gmail.com> wrote:
>> >>
>> >>> On 8/8/15 5:04 PM, James Carman wrote:
>> >>>> We talked about this a while back with respect to logging,,
>> >>>> having a
>> >>>> PoolListener interface or something.
>> >>>
>> >>> Right.  That could be one use.  The nice thing there is the
>> >>> interceptor could bring in whatever logging / event propagation
>> >>> infrastructure it wanted to use.
>> >>>
>> >>> Phil
>> >>>> On Sat, Aug 8, 2015 at 7:36 PM Phil Steitz <phil.ste...@gmail.com>
>> >>> wrote:
>> >>>>
>> >>>>> Tomcat's jdbc-pool has an interceptor feature that allows custom
>> >>>>> code to be inserted into methods called on connections managed by
>> >>>>> the pool.  In [pool], we have the core infrastructure to support
>> >>>>> this in a generic way via the ProxiedObjectPool.  I propose
>> >>>>> that we
>> >>>>> extend this to allow users to configure interceptors to be called
>> >>>>> when registered methods are invoked on checked out objects.  I
>> >>>>> haven't really thought through how configuration would work, but
>> >>>>> basically clients would register methods and possibly interceptor
>> >>>>> properties and the interceptors would get references to the
>> >>>>> method,
>> >>>>> arguments, pool and pooled object.  Configuring interceptors in a
>> >>>>> GOP or GKOP would cause it to be wrapped in a ProxiedObjectPool.
>> >>>>> Eventually, we could use this [pool] capability to enable the
>> >>>>> kind
>> >>>>> of thing that jdbc-pool provides with its interceptors in DBCP.
>> >>>>> With [pool] itself, I could see providing method stats
>> >>>>> collectors,
>> >>>>> abandoned timer reset (avoiding having to implement use()) and
>> >>>>> maybe
>> >>>>> a pooled object properties cache.   If there are no objections, I
>> >>>>> will open a JIRA and start experimenting.
>> >>>>>
>> >>>>> Phil
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>>
>> ---------------------------------------------------------------------
>> >>>>>
>> >>>>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
>> >>>>> For additional commands, e-mail: dev-h...@commons.apache.org
>> >>>>>
>> >>>>>
>> >>>
>> >>>
>> >>> ---------------------------------------------------------------------
>> >>>
>> >>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
>> >>> For additional commands, e-mail: dev-h...@commons.apache.org
>> >>>
>> >>>
>> >>
>> >
>> > ---------------------------------------------------------------------
>> > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
>> > For additional commands, e-mail: dev-h...@commons.apache.org
>> >
>> >
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
>> For additional commands, e-mail: dev-h...@commons.apache.org
>>
>>

Reply via email to