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é
> >
>

Reply via email to