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...). /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] > >

