Hi,

I think you may ask this question in Spring-DM, or Karaf mailing list.
As the question is out of scope of Camel :)

Willem

Bengt Rodehav wrote:
Hello everyone,

I'm trying to use Spring-DM's support for managed-service-factory. My
artifact (deployed in Karaf 1.4) contains the following XML snippet in
beans.xml:

<osgix:managed-service-factory id="test-container"
factory-pid="se.digia.connect.routes.test.container"
    update-strategy="bean-managed" update-method="configurationUpdate">
    <osgix:interfaces>
      <value>se.digia.connect.core.api.IService</value>
    </osgix:interfaces>
    <bean
class="se.digia.connect.routes.test.container.impl.TestContainer"/>
  </osgix:managed-service-factory>

I then drop a configuration file called
"se.digia.connect.routes.test.container-first.cfg" in the etc folder. This
causes a service containing the correct configuration to be started and
registered. Via Felix WebConsole I can see the configuration and it's the
correct one. When I delete the configuration file from the "etc" folder, the
service is stopped. It all works.

However, my bean (an instance
of se.digia.connect.routes.test.container.impl.TestContainer) never gets a
callback. I expected the "configurationUpdate()" method of the TestContainer
class to be called whenever the configuration changes. My callback method
has the following signature:

  public void configurationUpdate(Map<String, ?> theProperties) throws
Exception

When I use a "managed-properties" instead of "managed-service-factory" I do
get the callback. The following works perfectly:

  <bean id="testRoute" class="se.digia.connect.routes.test.impl.TestRoute">
    <osgix:managed-properties persistent-id="se.digia.connect.routes.test"
update-strategy="bean-managed"
      update-method="configurationUpdate" />
  </bean>

  <spring-osgi:service ref="testRoute"
interface="se.digia.connect.core.api.IService"/>

What am I missing? How can I get a notification callback when the
configuration is changed when using a managed-service-factory?

Happy for any clues you may have.

By the way is this the recommended way to use managed service factories? Are
there any other (non Spring-DM) ways of doing this? IPojo for example.

/Bengt


Reply via email to