Hi Charles Thanks for answer.
So, if one day i need to add another driver bundle D3, i will be forced to rebuild my bundle B. And in my case, for each instance i would only use one of D1, D2, D3 but i should deploy all drivers. Regards 2011/4/1 Charles Moulliard <[email protected]> > Hi Herve, > > Blueprint or Spring DM mechanism which allows to proxified spring bean > and refer them in OSGI service is a completely independant from the > OSGI versioning and class loading resolution. > > What you can do in bundle B is to use the <Require-Bundle> > instructution pointing to BundleSymbolic-Name of wrapped bundles D1 > and D2. In this case, you do not need to import those packages. > > Regards, > > Charles Moulliard > > Sr. Principal Solution Architect - FuseSource > Apache Committer > > Blog : http://cmoulliard.blogspot.com > Twitter : http://twitter.com/cmoulliard > Linkedin : http://www.linkedin.com/in/charlesmoulliard > Skype: cmoulliard > > > > On Fri, Apr 1, 2011 at 3:29 PM, Hervé BARRAULT <[email protected]> > wrote: > > Hi, > > i'm asking a question about the dependency management and the publication > of > > OSGI services. > > > > Here a explanation of the situation : > > > > I have a bundle D1 exporting its packages (a wrapped JDBC driver). > > > > I have a bundle D2 exporting its packages (another wrapped JDBC driver). > > > > > > I have a bundle DS : a datasource with the following spring file (here an > > extract) : > > > > <bean id="datasource" class="org.apache.commons.dbcp.BasicDataSource" > > destroy-method="close"> > > <property name="driverClassName" value="${DB_DRIVER}"/> > > <property name="url" value="${DB_URL}"/> > > <property name="username" value="${DB_USER}"/> > > <property name="password" value="${DB_PWD}"/> > > <property name="poolPreparedStatements" value="true"/> > > </bean> > > <osgi:service id="my-ds" ref="datasource" > interface="javax.sql.DataSource" > > /> > > > > DS is importing packages from D1 AND D2 > > <Import-Package>oracle.jdbc.driver;resolution:=optional, > > com.microsoft.sqlserver;resolution:=optional, > > org.apache.commons.dbcp, > > javax.sql > > </Import-Package> > > > > With these bundles all its ok. > > > > > > And finally,I have my annoying Bundle B importing the datasource and > using > > it : > > <osgi:reference id="my-ds" interface="javax.sql.DataSource" /> > > > > In bundle B, i import javax.sql.DataSource. > > But i should also import packages exported by D1 and D2 otherwise i have > an > > exception when it's trying to create the driver (the class files are in > D1 > > or D2). > > > > I thought that the service will be exported with the needed dependencies. > > > > Is there a way to not declare import of D1 and D2 (in Bundle B) ? [I know > > there is DynamicImport-Package but i would rather using it]. > > Why an imported service is not coming with its own dependencies (is there > a > > way to do it)? > > > > Regards > > Hervé > > >
