Hi,

I don't have that much experience in this area, but on a first look
the suggested solution looks good to me. We can give it a spin and see
how it turns out.

Carsten

2012/3/20 Marcel Offermans <marcel.offerm...@luminis.nl>:
> Within ACE, we have a management agent that is very flexible and modular, 
> which is nice because it allows you to customize it any way you want. The 
> ace-target-devgateway project supplies such a modular agent and can be used 
> during development.
>
> On the other hand, once you've composed a management agent out of different 
> bundles, it is more convenient to have it packaged in a single, 
> self-contained bundle. That is exactly what the ace-managementagent project 
> supplies.
>
> Finally, we can go even further and provide a Java executable that contains 
> both an OSGi framework and embedded management agent. This is the 
> ace-launcher project.
>
> With this management agent, we have created an OSGi framework that can be 
> updated dynamically. The management agent itself, although present, should 
> probably be hidden from the other bundles that are installed (so they do not 
> interfere with them). Within our launcher and the single bundle, we could 
> simply not export anything that is contained within. At first, that sounds 
> like a tempting solution, but it also means it becomes impossible to 
> communicate with this agent, which has two important drawbacks:
>
> 1) There are a few configurable aspects in the management agent that use 
> Configuration Admin so they can be dynamically reconfigured at runtime. If 
> you cannot access this service, you cannot (re)configure anything.
>
> 2) The Deployment Admin specification, which can be extended by using 
> resource processors, won't be able to actually use those resource processors 
> since they need to be able to interact with Deployment Admin.
>
> Especially the second drawback is not acceptable (we could find a way around 
> the first, possibly by using getAllServiceReferences() and some reflection).
>
> On the other hand, we don't want to expose all these packages and services to 
> everybody.
>
> The proposed solution, which was previously discussed on the Amdatu website 
> (an open source project that uses Apache ACE and ran into these same issues) 
> and summarized on there [1].
>
> The solution involves using mandatory attributes on the imports and exports 
> that are part of the management agent to create a "name space" for every 
> bundle that is part of it. These attributes prevent other bundles from seeing 
> these packages and getting wired to them accidentally. Resource processors 
> can use these attributes to explicitly bind to the right packages.
>
> I propose to start using these attributes in ACE. Because we use the Auto 
> Configuration resource processor from Felix, we probably need to repackage it 
> so it supports these attributes. I would like your feedback on this. 
> Especially, can you think of an even better solution?
>
> Greetings, Marcel
>
> [1] 
> http://www.amdatu.org/confluence/display/Amdatu/AMA+issues+in+combination+with+resource+processors



-- 
Carsten Ziegeler
cziege...@apache.org

Reply via email to