Do you want to pick just one of the services? Do you want access to both, but 
the option to choose which you use? Do you want the newer version to take 
precedence?

The solution Emily suggests ties your blueprint to a particular version of the 
service. This may be what you want, but it will prevent you from being able to 
use any other version of the service. If you actually want to be able to pick 
the service you use then you need to use a reference list, not a reference.

<reference-list id="greetService"              
   interface="com.mii.greet.Greet"
   member-type="service-reference"/> This object will be of 
type:List<ServiceReference<Greet>> You can compare the service properties of 
the Service References to work out which one you want to use.

Regards


Tim Ward
-------------------
Apache Aries PMC member & Enterprise OSGi advocate
Enterprise OSGi in Action (http://www.manning.com/cummins)
-------------------


Date: Mon, 21 Jan 2013 23:02:09 +0000
Subject: Re: Need Help: Handling multiple versions of same service
From: [email protected]
To: [email protected]

When you register the same service by a different versin of a bundle, you can 
specify a service property with a value (e.g. version=2.0) and then in your 
client bundle, you can search the service with filter attribute to get that 
matching service property.

<reference id="accountRef"              
   interface="org.apache.aries.simple.Account" 
   component-name=”myAccount”
   filter=”(version=2.0)”/> 
Regards,
Emily
On Mon, Jan 21, 2013 at 1:11 PM, Jay Rajani <[email protected]> 
wrote:

Hi, 
I am using Apache Aries on Karaf OSGi container. I have two different version 
of a bundle installed at a time. I have exposed service using <service> tag as 
following.
 <service ref="greetService" interface="com.mii.greet.Greet"  /> 
On service consumer side, I refer to the service using reference tag. 
<reference id="greetService" interface="com.mii.greet.Greet" />
 But on consumer side, I always receive the service provider from the bundle 
which exposes the service first. How can we refer to services provided by 
different versions of same bundle.
 Regards,Jay Rajani

-- 
Thanks
Emily
=================

Emily Jiang
[email protected]
                                          

Reply via email to