Hi,

After several days if fighting through this stuff, I can safely say that
attempting to work with configuration a la declarative services is
nothing short of a nightmare...

I did get through the compendium spec, specifically the declarative
services section, paying note to the various verbiage dealing with
properties and configuration, all the while working with as yet
developing exemplary code;

a. In the service activation method (service, not bundle), the context
does provide a getProperties(), for which you can consistently grab
entries as defined in your SCR.XML instance (bundled in the dot.jar
under OSGI-INF and referenced from the header manifest as per spec); Of
course, what's the point of configuration items buried in the jar file,
other than something that otherwise would have been hard wired in the
code itself;

b. In the bundle activation method (bundle, not service), or otherwise
obtaining a service reference to ConfigurationAdmin (as in my case, via
the SCR bind() method, invoked prior to service activation in the case
of mandatory binding), I could use configAdmin.getConfiguration() and
set a config item; In the service activation method, this added item
would be present; So far, so good, albeit limited application;

c. I was unable to get items a la FilePersistence service of cm.jar
unless I replaced "configAdmin.getConfiguration()" with
"configAdmin.createFactoryConfiguration()", at which point "b)" above
stopped working; Not sure why "b)" and "c)" are mutually exclusive;
Also, if I have TUI running, I must issue a command like "ps" or the
createFactoryConfiguration() invocation will hang there indefinitely;

d. As per the spec, I deem there is no way of getting configuration
admin updates on demand... There is verbiage in the spec about
overwrites and precedence, which seems to indicate to me rather strongly
that I have no way to get updates other than to periodically check the
context.getProperties() list and see if there's anything new or changed;

e. If I attempt to set myself up as a ManagedService, while registered
with SCR, all configuration admin updates are intercepted / aborted, a
la the infamous "Configuration <my-pid> has already been delivered"
message;

If this is truly the design (of SCR), I consider it pretty unacceptable;
In production, so far I've found nothing as prescribed to be more useful
than the standard "System.getProperty()" vehicle; I think what is needed
is for SCR to pass the updates through, best a la registered "setter()"
method;

Of course, that seems to be the vehicle of Spring-DM and I applaud;

Again, there could be sprinkles of ignorance on my part... With that
said, if I can get "System.getProperty()" up and running in minutes
while I struggle through this stuff for days and days, well... I think I
have made my point...

Regards, how ever many lumps of sugar necessary... have a good day,
respectfully, Craig

-----Original Message-----
From: Craig Phillips [mailto:[EMAIL PROTECTED] 
Sent: Thursday, July 17, 2008 8:14 AM
To: dev@felix.apache.org
Subject: declarative services and configuration admin

Hi, good morning,

Maybe someone out there knows or has an idea of how configuration is
supposed to work within the context of declarative services and could
give me a one paragraph blurb and point me in the right direction...

I attempted to set up my bundle to provide the ManagedService and an
implementation of "updated(Dictionary)" thereof... My updated() method
was invoked twice with a null argument for Dictionary, even though I
provided a sample property key/value in the OSGI-INF entry;

If I use the net.luminis.cmc-0.2.1.jar and manually attempt to inject a
configuration property, I get the infamous "configuration already sent"
nag...

If I use a file based property a la the file persistence manager, I get
the same "configuration already sent" nag...

I then proceeded to obtain the ConfigurationAdmin service handle and
invoke the "update(Dictionary" method... besides hanging for quite some
time (I literally have to go to the TUI shell is issue a command like
"ps" or something to that effect to break the hang -- I have a number of
issues with TUI causing various functionality to hang, specifically
listen sockets);

I'm about to ditch declarative services and see if I can manually set
all this up... I figure that probably will work...  I'm fairly certain
it's the SCR that's conflicting somehow... and, I suspect, if I get
around to reading those pages in the compendium spec, it'll probably be
my own ignorance somehow -- meaning, the SCR has somehow or another
wrapped up all the boiler plate and the end user is supposed to register
a setter method or something... 

If someone out there has "felt my pain" and can steer me in the right
direction, much appreciated, 

Thanks, Craig Phillips, Praxis

Reply via email to