Thanks Clement,

/Bengt


2013/9/5 Clement Escoffier <[email protected]>

> Hi,
>
> I've opened https://issues.apache.org/jira/browse/FELIX-4217 to reproduce
> and track the problem.
>
> Regards,
>
> Clement
>
> On 3 sept. 2013, at 12:59, Bengt Rodehav <[email protected]> wrote:
>
> > 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]
> >>>>
> >>>>
> >>>
> >>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>

Reply via email to