Clement,

Have you had a chance to look at this? I'm thinking about upgrading to iPOJO
1.6.0 but I need to know whether this type of behavior is supported by iPOJO
or if it just happens to work. If it's not supported I would strongly wish
that it will be in the next iPOJO version (is that 1.8.0?).

/Bengt

2010/10/4 Bengt Rodehav <[email protected]>

> JIRA created:
>
> https://issues.apache.org/jira/browse/FELIX-2636
>
> <https://issues.apache.org/jira/browse/FELIX-2636>/Bengt
>
> 2010/10/4 Clement Escoffier <[email protected]>
>
>>
>> On 04.10.2010, at 21:04, Bengt Rodehav wrote:
>>
>> > Clement,
>> >
>> > I added:
>> >
>> > @Updated
>> >>
>> >>  public void updated(Dictionary theDict) {
>> >>
>> >>    System.out.println("updated: " + theDict);
>> >>
>> >>    mValid = true;
>> >>
>> >>  }
>> >>
>> >>
>> > I do get the output to System.out but the instance is still invalid.
>> >
>> >
>> > updated: {include=(?i).*(?<!\.TMP), redelivery.maxAttempts=10,
>> >> delimiter=<DELIM>
>> >
>> > , connect.enabled=false, deleteProcessedFiles=false,
>> skipEmptyFiles=false,
>> >> servi
>> >
>> > ce.factoryPid=connect.skandia.filetransfer, delay=60000,
>> >> fromUri=file:data/conne
>> >
>> > ct/test/sample/file2file, connect.name=Sample file transfer from file
>> to
>> >> file, f
>> >
>> >
>> elix.fileinstall.filename=connect.skandia.filetransfer-sample-file2file.cfg,
>> >> alw
>> >
>> > aysDisconnect=true,
>> >> service.pid=connect.skandia.filetransfer.694a9c3c-9319-46b0-
>> >
>> > 997f-70af37f40da2,
>> >> redelivery.delaypattern=0:2000;5:10000;10:60000;20:600000;25:
>> >
>> > 1800000, temporaryFileName=${file:name.noext}.tmp,
>> >> toUris=file:data/connect/test
>> >
>> > /sample/file2file/test-out}
>> >
>> >
>> > I don't seem to get the same problem with iPOJO 1.6.0. Maybe the problem
>> has
>> > been "fixed". Nevertheless, it's important for me to know that I don't
>> > speculate in a particular implementation detail but that I take
>> advantage of
>> > supported behaviour (preferably supported by some junit test case in
>> iPOJO).
>> >
>> > Should I still create a JIRA ticket?
>>
>> Yes please. Because I didn't fix anything in this area. I need to look
>> into this and create a test case (to avoid regressions).
>>
>> Regards,
>>
>> Clement
>>
>>
>> >
>> > /Bengt
>> >
>> > 2010/10/4 Clement Escoffier <[email protected]>
>> >
>> >> Hi,
>> >>
>> >> On 04.10.2010, at 18:00, Bengt Rodehav wrote:
>> >>
>> >>> Clement,
>> >>>
>> >>> Like I wrote before, I did manage to get iPOJO 1.6.0 to work for me.
>> >>> However, once I got it to work I realised that the @ServiceController
>> is
>> >> not
>> >>> really what I need. It's the @Controller. I haven't quite filled you
>> in
>> >> with
>> >>> all the details. This is what I do:
>> >>>
>> >>> I use OSGi service factories to instantiate "integration services" in
>> my
>> >>> Karaf/Camel based integration platform. Most of the integration
>> services
>> >> are
>> >>> implemented as Camel routes (but not all of them).
>> >>>
>> >>> When an instance becomes valid I start the camel route and when the
>> >> instance
>> >>> becomes invalid I stop it:
>> >>>
>> >>> @Validate
>> >>>
>> >>> public void start() {
>> >>>
>> >>>   startContext();
>> >>>
>> >>> }
>> >>>
>> >>>
>> >>>> @Invalidate
>> >>>
>> >>> public void stop() {
>> >>>
>> >>>   stopContext();
>> >>>
>> >>> }
>> >>>
>> >>>
>> >>> I use a configuration property (the connect.enabled) to control
>> whether a
>> >>> particular integration service should be up-and-running or not, using
>> the
>> >>> following code:
>> >>>
>> >>> @Controller
>> >>>
>> >>> @Property(name = "connect.enabled", mandatory = true)
>> >>>
>> >>> private boolean mValid = false;
>> >>>
>> >>>
>> >>> Note that the way I do it above makes sure that a disabled service
>> cannot
>> >>> start (this was my original problem). However, now I get problems on
>> >> startup
>> >>> (Karaf startup). Although the property "connect.enabled" is true, the
>> >>> instance is still invalid. Looking under the iPOJO tab in the
>> Webconsole
>> >> I
>> >>> can see that iPOJO regards this property as false and thus regards the
>> >> iPOJO
>> >>> instance as invalid. Looking under the Configuration tab I can see
>> that
>> >>> Configuration Manager regards it as true.
>> >>>
>> >>> There must be some kind of timing problem here. iPOJO regards the
>> >> instance
>> >>> as invalid (connect.enabled=false the way I initialise it) and then
>> >> doesn't
>> >>> pick up the change from configuration manager. My original problem was
>> >> the
>> >>> opposite since I initialised it to true instead. Then iPOJO regarded
>> the
>> >>> instance as valid and failed to pick up information from configuration
>> >>> manager that said it was disabled.
>> >>>
>> >>> How can I get this to work? (Note that I now use iPOJO 1.4.0 but I can
>> >>> upgrade if that would help)
>> >>>
>> >>> What I want to achieve is, I believe, rather trivial and it's hard to
>> >>> believe that no one else has thought of this use case:
>> >>>
>> >>> "Control the validity of an iPOJO instance using a configuration
>> >> property".
>> >>
>> >> There is two points here:
>> >> - I think there is a bug. In fact the @Controller and @Property are
>> >> completely disconnected (handler are complete separated). But, both
>> should
>> >> check the current value of the field during initialization, listen
>> onSet on
>> >> the field and call onSet when they receive a new value. It sounds like
>> one
>> >> of those handlers does not respect these instructions. I bet on the
>> >> Controller :-)
>> >> - could you try to add a @Updated method or use a setter for the
>> property.
>> >> In these method really assign the controller field to the desired value
>> >> (false|true) like m_controller = true|false. If it's works, it's
>> definitely
>> >> a bug, so please fill a bug.
>> >>
>> >>
>> >> Regards,
>> >>
>> >> Clement
>> >>
>> >>
>> >>>
>> >>> Any clues?
>> >>>
>> >>> BTW I also publish a service to enable my GUI to show me, and interact
>> >> with,
>> >>> all running "integration services". It makes it easy to find all of
>> "my
>> >>> services".
>> >>>
>> >>> /Bengt
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>> 2010/10/4 Clement Escoffier <[email protected]>
>> >>>
>> >>>> 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]
>> >>>>
>> >>>>
>> >>
>> >>
>> >> ---------------------------------------------------------------------
>> >> 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