You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@turbine.apache.org by Siegfried Goeschl <si...@it20one.at> on 2005/11/01 13:52:19 UTC
Re: How to integrate Turbine with other service frameworks such as
YAAFI, Fortress, Pico, HiveMind, Spring, you name it ....
Hi Eric,
I committed my source code surgery using the TurbineServiceProvider
approach and all tests are okay - now you can lookup services no matter
in which container they are located.
Cheers,
Siegfried Goeschl
Eric Pugh wrote:
> Hi Sigi,
>
> Just made my first Turbine 2.4 commit in a while.. Just updating the
> commons-email to 1.0 (yay!).
>
> At any rate, I to lean to #1. Less magic seems to be a good
> thing. We've talked about some sort of wrapper that would return a
> service from the first IOC container that found it.
>
> If it really is backwards compatible, which I guess it is, then that
> sounds great... Just as a question, have we checked if anyone is
> dynamically calling methods on a Service? Like to start it up or
> anything? If not, then I like #1. Worst came to worse you could
> always do an instanceof Service check....
>
> Eric
>
>
>
> On Oct 10, 2005, at 1:26 PM, Siegfried Goeschl wrote:
>
>> Hi folks,
>>
>> one of the lesser elegant things to do when migrating existing
>> Turbine services to Fulcrum components is the fact that you have to
>> know where you get the service from - we are actually violating the
>> service location transparency which is not utterly unimportant.
>>
>> I'm currently working my way through the latest SVN version of
>> Turbine and I think the following things could work
>>
>> 1) TurbineServiceProvider approach
>> ============================================================
>>
>> *) changing org.apache.turbine.services.ServiceBroker to return
>> Object instead of Service
>> *) define a generic TurbineServiceProvider interfaces exposing
>> methods to lookup and release services
>> *) change the existing Turbine service lookup to delegate service
>> lookups (regarding unknown services) to Turbine services
>> implementing TurbineServiceProvider interface
>>
>> +) this would allow transparent service lookup for many IOC
>> containers to come .... ;-)
>> +) this approach actually works with Turbine since callers of
>> Turbine services are usually not casting to Service
>> +) it is backward compatible for clients casting to the desired
>> service interface
>> +) it is rather straightforward to implement
>> -) it changes the existing ServiceBroker interface and is highly
>> visible
>>
>> 2) Dynamic Proxy approach
>> ============================================================
>>
>> It is possible to wrap the interfaces of an arbitrary object into an
>> dynamic proxy which could also expose the existing Service interface
>>
>> +) would not change the current interfaces
>> -) tricky, overengineered and a little bit fragile (btw, we call
>> that "edelhack" ... awesome but futile in the long run)
>> -) in the general case the is no meaningful implementation for many
>> of the Service methods.
>>
>> IMHO 1) would be the way to go but before I invest too much time I
>> would like to ask for some opinions out there ... any PMCs alive and
>> kicking are especially welcome ... :-)
>>
>> Thanks in advance
>>
>> Siegfried Goeschl
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: turbine-user-unsubscribe@jakarta.apache.org
>> For additional commands, e-mail: turbine-user-help@jakarta.apache.org
>>
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: turbine-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: turbine-user-help@jakarta.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: turbine-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: turbine-dev-help@jakarta.apache.org