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] >> >> >

