Hi,

On 03.10.2010, at 21:08, Bengt Rodehav wrote:

> Clement,
> 
> Now that used your tip (from the FAQ), it works fine with maven-ipojo-plugin
> version 1.6.0. The real error was of course that I used the wrong version of
> the manipulator. I dont't know why the latest version from trunk
> (1.7.0-SNAPSHOT) seemed the hide that error but it's gone now that I use the
> correct manipulator version.

I've to check that... I will look into that. 

Regards,

Clement

> 
> /Bengt
> 
> 2010/10/3 Bengt Rodehav <[email protected]>
> 
>> Thanks Clement - that worked perfectly!
>> 
>> I don't know how I've missed that FAQ but now I learned something new.
>> 
>> Yes, I used the latest maven-ipojo-plugin from trunk.
>> 
>> /Bengt
>> 
>> 
>> 
>> 2010/10/3 clement escoffier <[email protected]>
>> 
>> Hi,
>>> 
>>> 2010/10/3 Bengt Rodehav <[email protected]>
>>> 
>>>> Clement,
>>>> 
>>>> I've upgrade to iPOJO 1.6.0 but I still have problems exposing services
>>>> using the @ServiceController.
>>>> 
>>>> I get:
>>>> 
>>>> factory name="connect.skandia.filetransfer" state="invalid" bundle="86"
>>>> 
>>>> 
>>> implementation-class="se.digia.connect.services.skandia.filetransfer.FileTransferService"
>>>> missinghandlers
>>>> list="[org.apache.felix.ipojo.annotations:servicecontroller]"
>>>> requiredhandlers list="[org.apache.felix.ipojo:requires,
>>>> org.apache.felix.ipojo:properties, org.apache.felix.ipojo:callback,
>>>> org.apache.felix.ipojo:provides,
>>>> org.apache.felix.ipojo.annotations:servicecontroller,
>>>> org.apache.felix.ipojo:architecture]"
>>>> 
>>>> in the Webconsole under iPOJO/factories. It seems iPOJO cannot find a
>>>> handler for
>>>> 
>>>> org.apache.felix.ipojo.annotations:servicecontroller
>>>> 
>>>> What bundle am I missing?
>>>> 
>>> 
>>> No, but you must use the manipulator 1.6.4 as explained in:
>>> 
>>> http://felix.apache.org/site/ipojo-faq.html#iPOJOFAQ-Usingadifferentversionofthemanipulatorduringthemanipulation
>>> 
>>> 
>>>> 
>>>> BTW I also move away from using the ipojo url handler (online
>>> manipulator)
>>>> and started using the maven-ipojo-plugin instead. It turns out I cannot
>>> use
>>>> the latest released version of the plugin (1.6.0) but I have to use
>>>> 1.7.0-SNAPSHOT.
>>> 
>>> 
>>> Here is the configuration you should use.
>>> 
>>> <plugin>
>>>       <groupId>org.apache.felix</groupId>
>>>       <artifactId>maven-ipojo-plugin</artifactId>
>>>       <executions>
>>>         <execution>
>>>           <goals>
>>>             <goal>ipojo-bundle</goal>
>>>           </goals>
>>>         </execution>
>>>       </executions>
>>>       <dependencies>
>>>               <dependency>
>>>                       <groupId>org.apache.felix</groupId>
>>> 
>>> <artifactId>org.apache.felix.ipojo.manipulator</artifactId>
>>>                       <version>1.6.4</version>
>>>               </dependency>
>>>       </dependencies>
>>>     </plugin>
>>> 
>>> 
>>> 
>>> 
>>>> Otherwise I get the following exception:
>>>> 
>>>> java.lang.NullPointerException
>>>> 
>>> 
>>> I will look into that. Did you use the latest from trunk ?
>>> 
>>> Regards,
>>> 
>>> Clement
>>> 
>>> 
>>> 
>>>> 
>>>>       at
>>>>> 
>>>> 
>>> org.apache.felix.ipojo.manipulation.annotations.MetadataCollector.visitEnd(MetadataCollector.java:215)
>>>> 
>>>>       at org.objectweb.asm.ClassReader.accept(Unknown Source)
>>>> 
>>>>       at org.objectweb.asm.ClassReader.accept(Unknown Source)
>>>> 
>>>>       at
>>>>> 
>>>> 
>>> org.apache.felix.ipojo.manipulator.Pojoization.computeAnnotations(Pojoization.java:294)
>>>> 
>>>>       at
>>>>> 
>>>> 
>>> org.apache.felix.ipojo.manipulator.Pojoization.manipulateComponents(Pojoization.java:484)
>>>> 
>>>>       at
>>>>> 
>>>> 
>>> org.apache.felix.ipojo.manipulator.Pojoization.manipulateJarFile(Pojoization.java:335)
>>>> 
>>>>       at
>>>>> 
>>>> 
>>> org.apache.felix.ipojo.manipulator.Pojoization.pojoization(Pojoization.java:194)
>>>> 
>>>>       at
>>>>> 
>>>> 
>>> org.apache.felix.ipojo.plugin.ManipulatorMojo.execute(ManipulatorMojo.java:199)
>>>> 
>>>>       at
>>>>> 
>>>> 
>>> org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
>>>> 
>>>>       at
>>>>> 
>>>> 
>>> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
>>>> 
>>>>       at
>>>>> 
>>>> 
>>> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556)
>>>> 
>>>>       at
>>>>> 
>>>> 
>>> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:535)
>>>> 
>>>>       at
>>>>> 
>>>> 
>>> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
>>>> 
>>>>       at
>>>>> 
>>>> 
>>> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348)
>>>> 
>>>>       at
>>>>> 
>>>> 
>>> org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
>>>> 
>>>>       at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
>>>> 
>>>>       at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
>>>> 
>>>>       at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
>>>> 
>>>>       at
>>>>> 
>>> org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
>>>> 
>>>>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>> 
>>>>       at
>>>>> 
>>>> 
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>>> 
>>>>       at
>>>>> 
>>>> 
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>>> 
>>>>       at java.lang.reflect.Method.invoke(Method.java:597)
>>>> 
>>>>       at
>>>>> org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
>>>> 
>>>>       at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
>>>> 
>>>>       at
>>>>> org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
>>>> 
>>>>       at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
>>>> 
>>>> 
>>>> /Bengt
>>>> 
>>>> 
>>>> /Bengt
>>>> 
>>>> 2010/10/1 Clement Escoffier <[email protected]>
>>>> 
>>>>> 
>>>>> On 01.10.2010, at 18:30, Bengt Rodehav wrote:
>>>>> 
>>>>>> Clement,
>>>>>> 
>>>>>> Just a clarification:
>>>>>> 
>>>>>> When you restart your instance, be sure that the filed is really
>>>>> re-assigned
>>>>>>> to false. To be sure, make your instance immediate and set the
>>> field
>>>> in
>>>>> the
>>>>>>> constructor.
>>>>>> 
>>>>>> 
>>>>>> I suspect you misspelled "filed". I'm not sure what you mean here.
>>> My
>>>>>> "mValid" field will be set from a configuration that file install
>>> picks
>>>>> up.
>>>>>> If the configuration value "connect.enabled" is set to true (which
>>> is
>>>> the
>>>>>> normal case) then I want the service to be started. If it is set to
>>>>> false,
>>>>>> then I do not want to start nor publish a service yet.
>>>>>> 
>>>>>> I want to make sure that I never have a mismatch, that is if
>>>>>> the "connect.enabled" property is false, then the service can never
>>> be
>>>>>> started and vice versa. It is important that services that I have
>>>>> "disabled"
>>>>>> this way is never started (which has unfortunately happened...).
>>>>> 
>>>>> I never tested having the @ServiceController on the same field as a
>>>>> @Property. This may have some side effects, like not-yet injected
>>> values.
>>>>> Try to set your component as immediate. This will force the injection.
>>> In
>>>>> fact, if the property has the value false, but there is no object
>>>> created,
>>>>> the
>>>>> @ServiceController has no way to know the current value. If the
>>> instance
>>>> is
>>>>> immediate, an object is created and the field is assigned to the
>>> property
>>>>> value.
>>>>> This will allow the service controller to get the value.
>>>>> 
>>>>> Clement
>>>>> 
>>>>>> 
>>>>>> /Bengt
>>>>>> 
>>>>>> 
>>>>>> 2010/10/1 Clement Escoffier <[email protected]>
>>>>>> 
>>>>>>> 
>>>>>>> On 01.10.2010, at 17:03, Bengt Rodehav wrote:
>>>>>>> 
>>>>>>>> OK - obviously @ServiceController is what I need...
>>>>>>> 
>>>>>>> As said by Richard, The @ServiceController impacts the service
>>>> lifecycle
>>>>>>> The @Controller impacts the instance lifecycle. The @Controller is
>>>>> generally
>>>>>>> used to detect wrong configuration or really bad state where the
>>>>> instance
>>>>>>> decide to become invalid.
>>>>>>> 
>>>>>>> The @ServiceController is not tied to the instance lifecycle, which
>>>>> means
>>>>>>> that despite the instance is valid, the service can be unpublished
>>>> using
>>>>> the
>>>>>>> @ServiceController.
>>>>>>> 
>>>>>>> When you restart your instance, be sure that the filed is really
>>>>>>> re-assigned to false. To be sure, make your instance immediate and
>>> set
>>>>> the
>>>>>>> field in the constructor.
>>>>>>> 
>>>>>>> Regards,
>>>>>>> 
>>>>>>> Clement
>>>>>>> 
>>>>>>>> 
>>>>>>>> /Bengt
>>>>>>>> 
>>>>>>>> 2010/10/1 Richard S. Hall <[email protected]>
>>>>>>>> 
>>>>>>>>> On 10/1/10 10:41, Bengt Rodehav wrote:
>>>>>>>>> 
>>>>>>>>>> OK - thanks,
>>>>>>>>>> 
>>>>>>>>>> BTW, what then is @Controller used for?
>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> It is for disabling the component itself and is generally more to
>>>>> signal
>>>>>>>>> error conditions from which the component cannot recover, such as
>>>>> faulty
>>>>>>> or
>>>>>>>>> missing configuration. On the other hand, @ServiceController
>>> allows
>>>>> you
>>>>>>> to
>>>>>>>>> control when your services are provided.
>>>>>>>>> 
>>>>>>>>> -> richard
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> /Bengt
>>>>>>>>>> 
>>>>>>>>>> 2010/10/1 Karl Pauls<[email protected]>
>>>>>>>>>> 
>>>>>>>>>> iirc, you want the @ServiceController and not the @Controller
>>> and
>>>>>>>>>>> again iirc, you need to update to ipojo 1.6.x for that one.
>>>>>>>>>>> 
>>>>>>>>>>> regards,
>>>>>>>>>>> 
>>>>>>>>>>> Karl
>>>>>>>>>>> 
>>>>>>>>>>> On Fri, Oct 1, 2010 at 4:06 PM, Bengt Rodehav<
>>> [email protected]>
>>>>>>> wrote:
>>>>>>>>>>> 
>>>>>>>>>>>> I'm using iPOJO 1.4.0. My installed iPOJO related artifacts
>>> (in
>>>>> Karaf
>>>>>>>>>>>> 
>>>>>>>>>>> 1.6.0)
>>>>>>>>>>> 
>>>>>>>>>>>> are:
>>>>>>>>>>>> 
>>>>>>>>>>>> org.apache.felix.ipojo-1.4.0.jar
>>>>>>>>>>>> 
>>>>>>>>>>>> org.apache.felix.ipojo.handler.extender-1.4.0.jar
>>>>>>>>>>>> 
>>>>>>>>>>>> org.apache.felix.ipojo.online.manipulator-1.4.2.jar
>>>>>>>>>>>> 
>>>>>>>>>>>> org.apache.felix.ipojo.webconsole-1.4.0.jar
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> I also use
>>>>>>>>>>>> 
>>>>>>>>>>>> org.apache.felix.fileinstall-3.0.2.jar
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> ... and a whole lot of other bundles.
>>>>>>>>>>>> 
>>>>>>>>>>>> I publish services using factories. An example of a
>>> configuration
>>>>>>> file
>>>>>>>>>>>> 
>>>>>>>>>>> for
>>>>>>>>>>> 
>>>>>>>>>>>> my factories is:
>>>>>>>>>>>> 
>>>>>>>>>>>> connect.enabled=true
>>>>>>>>>>>> 
>>>>>>>>>>>> connect.name=Sample file transfer from file to file
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> The "connect.enabled" property is bound to the field in my
>>>> service
>>>>>>> class
>>>>>>>>>>>> that is a "controller":
>>>>>>>>>>>> 
>>>>>>>>>>>> @Controller
>>>>>>>>>>>> 
>>>>>>>>>>>> @Property(name = "connect.enabled", mandatory = false, value =
>>>>>>> "true")
>>>>>>>>>>>> 
>>>>>>>>>>>> private boolean mValid;
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> The intention is that I can then disable my service by setting
>>>> this
>>>>>>>>>>>> configuration property to false. However, I've encounted a
>>>> problem
>>>>>>>>>>>> 
>>>>>>>>>>> regarding
>>>>>>>>>>> 
>>>>>>>>>>>> this. While the service is active, I set "connect.enabled" to
>>>>> false.
>>>>>>>>>>>> File
>>>>>>>>>>>> install picks up the changes and the service is de-registered
>>> -
>>>>> works
>>>>>>>>>>>> perfectly. But if I now shutdown Karaf and restart it again,
>>> the
>>>>>>> service
>>>>>>>>>>>> 
>>>>>>>>>>> is
>>>>>>>>>>> 
>>>>>>>>>>>> started (registered) despite the fact that "connect.disabled"
>>> is
>>>>>>> still
>>>>>>>>>>>> false. Is this a bug in iPOJO or have I misunderstood
>>> something?
>>>>>>>>>>>> 
>>>>>>>>>>>> When googling about this problem I noticed that there is also
>>> an
>>>>>>>>>>>> 
>>>>>>>>>>> annotation
>>>>>>>>>>> 
>>>>>>>>>>>> called @ServiceController. What is the difference between
>>>>> @Controller
>>>>>>>>>>>> and
>>>>>>>>>>>> @ServiceController?
>>>>>>>>>>>> 
>>>>>>>>>>>> I tried to switch to @ServiceController instead but get the
>>>>> following
>>>>>>>>>>>> 
>>>>>>>>>>> error:
>>>>>>>>>>> 
>>>>>>>>>>>> 2010-10-01 15:48:03,341 | ERROR | guration Updater |
>>> configadmin
>>>>>>>>>>>> 
>>>>>>>>>>>>>       | ?                                   ? |
>>>>>>>>>>>>> [org.apache.felix.ipojo.Factory,
>>>>>>>>>>>>> 
>>>>>>>>>>>> org.osgi.service.cm.ManagedServiceFactory,
>>>>>>>>>>> 
>>>>>>>>>>>> id=174, bundle=84]: Updating configuration property
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>> 
>>>>> 
>>>> 
>>> {service.pid=connect.skandia.filetransfer.269d25ad-c4d6-4277-9d78-6d4b15acb795,
>>>>>>>>>>> 
>>>>>>>>>>>> fromuri=file:data/connect/test/sample/file2file,
>>>>>>>>>>>>> touris=file:data/connect/test/sample/file2file/test-out,
>>>>>>>>>>>>> service.factorypid=connect.skandia.filetransfer,
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>> 
>>>>> 
>>>> 
>>> felix.fileinstall.filename=connect.skandia.filetransfer-sample-file2file.cfg,
>>>>>>>>>>> 
>>>>>>>>>>>> connect.enabled=true, instance.name
>>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>> =connect.skandia.filetransfer.269d25ad-c4d6-4277-9d78-6d4b15acb795,
>>>>>>>>>>> 
>>>>>>>>>>>> connect.name=Sample file transfer from file to file} caused a
>>>>>>> problem:
>>>>>>>>>>>>> Missing handlers :
>>>>>>> org.apache.felix.ipojo.annotations:servicecontroller
>>>>>>>>>>>>> 
>>>>>>>>>>>> org.osgi.service.cm.ConfigurationException:
>>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>> 
>>>>> 
>>>> 
>>> {service.pid=connect.skandia.filetransfer.269d25ad-c4d6-4277-9d78-6d4b15acb795,
>>>>>>>>>>> 
>>>>>>>>>>>> fromuri=file:data/connect/test/sample/file2file,
>>>>>>>>>>>>> touris=file:data/connect/test/sample/file2file/test-out,
>>>>>>>>>>>>> service.factorypid=connect.skandia.filetransfer,
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>> 
>>>>> 
>>>> 
>>> felix.fileinstall.filename=connect.skandia.filetransfer-sample-file2file.cfg,
>>>>>>>>>>> 
>>>>>>>>>>>> connect.enabled=true, instance.name
>>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>> =connect.skandia.filetransfer.269d25ad-c4d6-4277-9d78-6d4b15acb795,
>>>>>>>>>>> 
>>>>>>>>>>>> connect.name=Sample file transfer from file to file} :
>>> Missing
>>>>>>> handlers
>>>>>>>>>>>>> 
>>>>>>>>>>>> :
>>>>>>>>>>> 
>>>>>>>>>>>> org.apache.felix.ipojo.annotations:servicecontroller
>>>>>>>>>>>>> 
>>>>>>>>>>>> at
>>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>> 
>>>>> 
>>>> 
>>> org.apache.felix.ipojo.IPojoFactory.updated(IPojoFactory.java:609)[38:org.apache.felix.ipojo:1.4.0]
>>>>>>>>>>> 
>>>>>>>>>>>> at
>>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>> 
>>>>> 
>>>> 
>>> org.apache.felix.cm.impl.ConfigurationManager$ManagedServiceFactoryUpdate.run(ConfigurationManager.java:1279)[6:org.apache.felix.configadmin:1.2.4]
>>>>>>>>>>> 
>>>>>>>>>>>> at
>>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>> 
>>>>> 
>>>> 
>>> org.apache.felix.cm.impl.UpdateThread.run(UpdateThread.java:88)[6:org.apache.felix.configadmin:1.2.4]
>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> I'm not sure in which jar the
>>>>>>>>>>>> " org.apache.felix.ipojo.annotations:servicecontroller"
>>> resides.
>>>> I
>>>>>>> tried
>>>>>>>>>>>> 
>>>>>>>>>>> to
>>>>>>>>>>> 
>>>>>>>>>>>> deploy "org.apache.felix.ipojo.handler.whiteboard-1.4.0.jar"
>>> but
>>>> it
>>>>>>>>>>>> 
>>>>>>>>>>> didn't
>>>>>>>>>>> 
>>>>>>>>>>>> seem to help.
>>>>>>>>>>>> 
>>>>>>>>>>>> Can anyone help me sort this out?
>>>>>>>>>>>> 
>>>>>>>>>>>> /Bengt
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> --
>>>>>>>>>>> Karl Pauls
>>>>>>>>>>> [email protected]
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>> ---------------------------------------------------------------------
>>>>>>>>>>> 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]
>>>>>>>>> 
>>>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>> ---------------------------------------------------------------------
>>>>>>> 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]
>>>>> 
>>>>> 
>>>> 
>>> 
>> 
>> 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to