I agree that I should NOT have to implement this code. However, I'm having
to do so in order to work around this apparent issue.

- Ray


On Mon, Apr 28, 2014 at 5:23 PM, Raymond Auge <[email protected]>wrote:

>
>
>
> On Mon, Apr 28, 2014 at 5:17 PM, Thomas Watson <[email protected]>wrote:
>
>> You seem to be implementing the work that the framework already does for
>> ServiceFactory registrations.  The framework will only call your factory
>> once as long as the use count of the service is greater than zero for a
>> particular bundle.  The framework will then cache that service instance and
>> keep returning it directly to the bundle without calling the ServiceFactory
>> again.
>>
>> Am I understanding your observation correctly?  You are stating that your
>> factory is not called multiple times for the same consuming bundle?
>>
>
> I'm stating that when a single bundle is deployed which requests the same
> service multiple times the factory method is called multiple times and the
> bundle gets a different instance of the service each time.
>
> I'm not sure if there is some sort of race condition but the client bundle
> (in this case the felix webconsole) is requesting the HttpService mutliple
> times (in the same thread) and each time the equinox framework is invoking
> the HttpServiceFactory method returning different HttpServiceImpl instance.
>
> - Ray
>
>
>>
>>
>> Tom
>>
>>
>>
>> [image: Inactive hide details for Raymond Auge ---04/28/2014 03:24:26
>> PM---Hey all, I have to write code as follows in a ServiceFactory]Raymond
>> Auge ---04/28/2014 03:24:26 PM---Hey all, I have to write code as follows
>> in a ServiceFactory impl in order for my
>>
>>
>> From: Raymond Auge <[email protected]>
>> To: Equinox development mailing list <[email protected]>
>> Date: 04/28/2014 03:24 PM
>>
>> Subject: [equinox-dev] bug or not
>> Sent by: [email protected]
>> ------------------------------
>>
>>
>>
>> Hey all,
>>
>> I have to write code as follows in a ServiceFactory impl in order for my
>> factory to always return the same instance per bundle running on
>> equinox 3.8.0.v20120529-1548
>>
>> ===============================================
>> public HttpService getService(
>> Bundle bundle, ServiceRegistration<HttpService> registration) {
>>
>> HttpServiceImpl httpServiceImpl = serviceMap.get(bundle);
>>
>> if (httpServiceImpl != null) {
>> return httpServiceImpl;
>> }
>>
>> httpServiceImpl = new HttpServiceImpl(
>> bundle, contextController, legacyServiceIdGenerator);
>>
>> serviceMap.putIfAbsent(bundle, httpServiceImpl);
>>
>> return httpServiceImpl;
>> }
>> ===============================================
>>
>> This seems clearly wrong as per the spec.
>>
>> It's certainly calling the getService method of the ServiceFactory which
>> I'm guessing means it's not incorrectly registered.
>>
>> What could I be doing wrong? Was this ever a bug in equinox that was
>> later resolved?
>>
>> --
>> *Raymond Augé* <http://www.liferay.com/web/raymond.auge/profile>
>>  (@rotty3000)
>> Senior Software Architect
>> *Liferay, Inc.* <http://www.liferay.com/> (@Liferay)
>> _______________________________________________
>> equinox-dev mailing list
>> [email protected]
>> https://dev.eclipse.org/mailman/listinfo/equinox-dev
>>
>>
>> _______________________________________________
>> equinox-dev mailing list
>> [email protected]
>> https://dev.eclipse.org/mailman/listinfo/equinox-dev
>>
>>
>
>
> --
> *Raymond Augé* <http://www.liferay.com/web/raymond.auge/profile>
>  (@rotty3000)
> Senior Software Architect
> *Liferay, Inc.* <http://www.liferay.com> (@Liferay)
>
>


-- 
*Raymond Augé* <http://www.liferay.com/web/raymond.auge/profile>
 (@rotty3000)
Senior Software Architect
*Liferay, Inc.* <http://www.liferay.com> (@Liferay)
_______________________________________________
equinox-dev mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/equinox-dev

Reply via email to