On Wed, Dec 19, 2012 at 11:27 AM, Felix Meschberger <[email protected]>wrote:
> Hi,
>
> Am 19.12.2012 um 17:12 schrieb Raymond Auge:
>
> Hello All,
>
> I'd like to asked what is the suggested method for creating instance
> factories according to the service pattern.
>
> i.e. I would like to obtain a list of stateless instances which are single
> use and which are subsequently simply collected.
>
>
> Maybe you just register a service which happens to be the factory:
>
> public interface FooFactory {
> Foo createFoo(...)
> }
>
> Clients would get the FooFactory service and call the createFoo method to
> get Foo instances. Assuming these are throwaway instances.
>
Ok, sigh, this just means I have lots of boiler plate code to write (each
Impl will need a "service" which generates it). I'm trying to fit an
existing pattern into a more modular design and we have tons of event
handlers.
>
>
> I'm thinking service factory but I'm not sure if there are further
> implications regarding the registration of outputted instances, like
> automatic tracking of service references.
>
>
> ServiceFactory is not what you are looking for: This is just a kind of
> factory managed by the framework such that each bundle getting the service
> in fact gets its own instance. In other words with the ServiceFactory
> pattern you get delayed service object creation plus more freedom in
> creating the services -- but at most one instance per requesting bundle.
>
>
> Effectively I would like to simply register (a factory) to an interface as
> usual, and later get the list of matching services.. but the output would
> be stateless pojos which I later don't have to "unget" as it were.
>
>
> You mean the Foo objects will also be registered as services on their own
> once created ?
>
In fact the opposite. The Foo instances would never be registered anywhere
and would be thrown away after use, a stateless event handler for instance.
> In this case you will have to do some cleanup, service unregistration, at
> the end.
>
This is what I'm hoping to avoid because it means significant management
overhead on a very large scale.
>
> If you want this the Declarative Services ComponentFactory components come
> to mind: You define the Foo class as a ComponentFactory component. To get
> insances consumers get ComponentFactory service registered on behalf of the
> Foo service and call its newInstance(Dictionary) method. This creates Foo
> instances and if declared as services also registers them. The drawback is,
> that you have explicitly dispose off these instances for cleanup.
>
I don't think this fits either.
What we have is a typical event handler scenario:
processEvent(Event event) {
Handler[] handlers = getHandlers(key);
for (Handler handler : handlers) {
handler.process(event);
}
}
I'd like to be able to use osgi to affect the handlers result set during
runtime.
Thanks for your help.
- Ray
>
> Regards
> Felix
>
>
> Make sense?
>
> - Ray
>
>
>
> _______________________________________________
> OSGi Developer Mail List
> [email protected]
> https://mail.osgi.org/mailman/listinfo/osgi-dev
>
>
>
> _______________________________________________
> OSGi Developer Mail List
> [email protected]
> https://mail.osgi.org/mailman/listinfo/osgi-dev
>
--
*Raymond Augé* <http://www.liferay.com/web/raymond.auge/profile>
<http://twitter.com/#!/rotty3000> | Senior Software Architect | *Liferay,
Inc.* <http://www.liferay.com> <https://twitter.com/#!/liferay>
---
24-25 October 2012 |* Liferay **Spain Symposium* |
liferay.com/spain2012<http://www.liferay.com/spain2012>
16 November 2012 |* Liferay **Italy Symposium* |
liferay.com/italy2012<http://www.liferay.com/italy2012>
_______________________________________________
OSGi Developer Mail List
[email protected]
https://mail.osgi.org/mailman/listinfo/osgi-dev