>>>>> "Leo" == Leo Sutic <[EMAIL PROTECTED]> writes:
Leo> The difference is this - with explicit release I can: Leo> public void someMethod () { component = manager.lookup Leo> (ExpensiveButPooledComponent.ROLE); ... manager.release Leo> (component); <<<<<<<<<<<< Added this } Leo> And thus not drain the pool, as I only really need 1 Leo> instance. Leo> As for whether this is efficient or not - that is not the Leo> issue. Wouldn't it be more IoCish to pass an instance of ExpensiveButPooledComponent to the method as opposed to it acquiring such instance on it's own? Leo> The point is that with a per-request GC, you will Leo> need to lookup all components you require *at the start of Leo> the request* and then pass those around as you process the Leo> request (to avoid too many lookups) - unless you are really Leo> sure that you will not end up in a situation similar to the Leo> one I described. (That is, you repeatedly call a method that Leo> does a lookup during a single request. It will never be as Leo> simple as the example: someMethod() will call someOtherMethod Leo> and so on until, 20 steps up the call stack, you have a Leo> lookup. And then, 20 more steps until the last method Leo> returns.) If I am not mistaken you just described a component with PerThread lifestyle policy, no? Another alternative is you build an object along the lines: class SomeMethodDoer { SomeMethodDoer(ExpensiveButPooledComponent) { } someMethod() { } } And then build it (yes, explicit new) and call someMethod as many times as you need. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, email: [EMAIL PROTECTED]