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