Can you also check import/exports of your new bundle ?
Imagine that the INotificationProvider package is not imported (thus not
shared between ipojo and blueprint components) ...
That could explain theses kind of issue where everything looks fine.

--G


2013/9/3 Bengt Rodehav <[email protected]>

> Hello Clement,
>
> I have already checked that the service is published - it looks OK. I have
> also put some logging in its constructor to verify that an object is
> instantiated.
>
> Here is the contents of the architecture field in the iPOJO tab in the web
> console:
>
> *instance name="seco.notification.service-0" state="valid" bundle="86"
> component.type="seco.notification.service"
>         handler name="org.apache.felix.ipojo:requires" state="valid"
>                 requires
> specification="se.digia.seco.notification.spi.INotificationProvider"
> id="se.digia.seco.notification.spi.INotificationProvider"
> optional="false" aggregate="true" proxy="false"
> binding-policy="dynamic" state="resolved"
>         handler name="org.apache.felix.ipojo:properties" state="valid"
> managed.service.pid="seco.notification.service"
>                 property name="allowZeroProviders" value="false"
>         handler name="org.apache.felix.ipojo:provides" state="valid"
>                 provides
> specifications="[se.digia.seco.notification.api.INotificationService]"
> state="registered" service.id="358"
>                         property name="component"
> value="se.digia.seco.notification.service.NotificationService"
>                         property name="factory.name"
> value="seco.notification.service"
>                         property name="instance.name"
> value="seco.notification.service-0"
>         handler name="org.apache.felix.ipojo:architecture" state="valid"*
>
>
>
> If I redesign my new provider to use iPOJO instead of Blueprint it
> works. I just add these two lines to my provider:
>
>
> *@Provides(specifications = INotificationProvider.class)
> @Instantiate*
>
>
> Of course this is a workaround for me but I would really like to know
> why I can't get this to work using Blueprint. I would like to have
> both possibilities in the future.
>
>
> /Bengt
>
>
>
> 2013/9/3 Clement Escoffier <[email protected]>
>
> > Hi,
> >
> > It should not matter if the service is in the service registry.
> >
> > Can you check that the new service is published in the service registry,
> > with the web console or the `inspect` gogo command ?
> > Can you also give me the architecture of the iPOJO instance.
> >
> > On Gogo:
> > ipojo:instance name-of-the-instance
> >
> > Or with the web console iPOJO plugin (
> >
> http://repo1.maven.org/maven2/org/apache/felix/org.apache.felix.ipojo.webconsole/1.7.0/org.apache.felix.ipojo.webconsole-1.7.0.jar
> > ).
> >
> > Regards,
> >
> > Clement
> >
> > On 3 sept. 2013, at 07:46, Bengt Rodehav <[email protected]> wrote:
> >
> > > I'm using iPOJO 1.8.6 in Karaf 2.3.1 on Felix.
> > >
> > > I have an existing mechanism for notifications using iPOJO. Basically
> my
> > > notification service (that uses iPOJO) uses all registered notifier
> > > providers as follows:
> > >
> > > *  @Requires(optional = false, nullable = false)*
> > > *  private INotificationProvider[] mProviders;*
> > >
> > > Whenever I need to create a notification, it will be handled by all
> > > registered notifier. E g I have a notification provider that logs the
> > > problem in a log file and another that publishes the notification in
> > > Windows event log. So far I have published my notification providers
> > using
> > > iPOJO as well (the notification service also uses iPOJO).
> > >
> > > I now have a notification provider that publishes its service using
> Aries
> > > Blueprint, as follows:
> > >
> > > *<?xml version="1.0" encoding="UTF-8"?>*
> > > *<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0";
> > xmlns:xsi="
> > > http://www.w3.org/2001/XMLSchema-instance"*
> > > *  xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0";
> > > xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0
> "*
> > > *  default-activation="eager">*
> > > *
> > > *
> > > *  <bean id="notifierService" class="myPackage1.MyNotifierService" />*
> > > *
> > > *
> > > *  <service ref="notifierService"
> > > interface="myPackage2.INotificationProvider"/>*
> > > *</blueprint>*
> > >
> > > I've replaced my true package names above but "myPackage2" is the
> package
> > > where the INotificationProvider interface resides.
> > >
> > > For some reason my notification service does not pick up the service
> > > published via Blueprint which means that my new notification provider
> is
> > > being skipped.
> > >
> > > I thought for a while that it is the default "lazy" activation strategy
> > > that plays tricks on me which is why I use "eager" instead but it
> doesn't
> > > help.
> > >
> > > I thought it shouldn't matter in what way I publish an OSGi service,
> > iPOJO
> > > should still pick it up. Does anyone know what I could be doing wrong?
> > >
> > > /Bengt
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [email protected]
> > For additional commands, e-mail: [email protected]
> >
> >
>

Reply via email to