Thanks for the tip but I have checked that already. The package containing the interface is imported. It is the exact same import that the ones that work use.
Also, just by replacing Blueprint with iPOJO for my new provider it started to work - nothing else changed. I wonder if there is an inherent problem in the situation where you use iPOJO's @Require with an array and the required services are published with Blueprint. Have you tested that combination? /Bengt 2013/9/3 Guillaume Sauthier (OW2/GMail) <[email protected]> > 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] > > > > > > > > >

