will check!

Thx,
- Ray


On Mon, Apr 28, 2014 at 5:37 PM, Thomas Watson <tjwat...@us.ibm.com> wrote:

> Is your ServiceFactory.ungetService getting called each time?  If so then
> it is likely the felix webconsole is using an anti pattern like this:
>
> HttpService service = bc.getService(httpServiceRef);
> /// do some work with http service
> bc.ungetService(httpServiceRef);
>
> If they are getting/ungetting the service each time they are interacting
> with the service then the usecount for the service goes to zero for each
> usage which then causes the framework to free the service instance object.
>  The should be using something like a ServiceTracker to avoid this kind of
> anti-pattern.
>
> Tom
>
>
>
> [image: Inactive hide details for Raymond Auge ---04/28/2014 04:26:50
> PM---I agree that I should NOT have to implement this code. Howev]Raymond
> Auge ---04/28/2014 04:26:50 PM---I agree that I should NOT have to
> implement this code. However, I'm having to do so in order to work
>
>
> From: Raymond Auge <raymond.a...@liferay.com>
> To: Equinox development mailing list <equinox-dev@eclipse.org>
> Date: 04/28/2014 04:26 PM
> Subject: Re: [equinox-dev] bug or not
>
> Sent by: equinox-dev-boun...@eclipse.org
> ------------------------------
>
>
>
> 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 
> <*raymond.a...@liferay.com*<raymond.a...@liferay.com>>
> wrote:
>
>
>
>
>    On Mon, Apr 28, 2014 at 5:17 PM, Thomas Watson 
> <*tjwat...@us.ibm.com*<tjwat...@us.ibm.com>>
>    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 <*raymond.a...@liferay.com*<raymond.a...@liferay.com>
>       >
>       To: Equinox development mailing list 
> <*equinox-dev@eclipse.org*<equinox-dev@eclipse.org>
>       >
>       Date: 04/28/2014 03:24 PM
>
>       Subject: [equinox-dev] bug or not
>       Sent by: 
> *equinox-dev-boun...@eclipse.org*<equinox-dev-boun...@eclipse.org>
>       ------------------------------
>
>
>
>       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
> *equinox-dev@eclipse.org* <equinox-dev@eclipse.org>
> *https://dev.eclipse.org/mailman/listinfo/equinox-dev*<https://dev.eclipse.org/mailman/listinfo/equinox-dev>
>
>
>       _______________________________________________
>       equinox-dev mailing list
> *equinox-dev@eclipse.org* <equinox-dev@eclipse.org>
> *https://dev.eclipse.org/mailman/listinfo/equinox-dev*<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
> equinox-dev@eclipse.org
> https://dev.eclipse.org/mailman/listinfo/equinox-dev
>
>
> _______________________________________________
> equinox-dev mailing list
> equinox-dev@eclipse.org
> 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)
_______________________________________________
equinox-dev mailing list
equinox-dev@eclipse.org
https://dev.eclipse.org/mailman/listinfo/equinox-dev

Reply via email to