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

Reply via email to