Thanks Clement, Guess I should be upgrading to 1.6.0 then.
/Bengt 2010/10/6 Clement Escoffier <[email protected]> > Hi, > > On 06.10.2010, at 09:31, Bengt Rodehav wrote: > > > 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?). > > My first impression is, it's supported (I've found one modification fixing > the issue between 1.4.0 and 1.6.0). However, I still didn't write a test > case to avoid future regressions. In case of a bug it would 1.6.6 not 1.8.0 > (minor bug fixes). > > Clement > > > > > /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] > >>> > >>> > >> > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > >

