will check! Thx, - Ray
On Mon, Apr 28, 2014 at 5:37 PM, Thomas Watson <[email protected]> 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 <[email protected]> > To: Equinox development mailing list <[email protected]> > Date: 04/28/2014 04:26 PM > Subject: Re: [equinox-dev] bug or not > > Sent by: [email protected] > ------------------------------ > > > > 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]*<[email protected]>> > wrote: > > > > > On Mon, Apr 28, 2014 at 5:17 PM, Thomas Watson > <*[email protected]*<[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]*<[email protected]> > > > To: Equinox development mailing list > <*[email protected]*<[email protected]> > > > Date: 04/28/2014 03:24 PM > > Subject: [equinox-dev] bug or not > Sent by: > *[email protected]*<[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]* <[email protected]> > *https://dev.eclipse.org/mailman/listinfo/equinox-dev*<https://dev.eclipse.org/mailman/listinfo/equinox-dev> > > > _______________________________________________ > equinox-dev mailing list > *[email protected]* <[email protected]> > *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 > [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)
_______________________________________________ equinox-dev mailing list [email protected] https://dev.eclipse.org/mailman/listinfo/equinox-dev
