The Java C&I spec group has an open issue 173 "What APIs are available to unmanaged code?" At the Assembly WG meeting week of Jan 16 I volunteered to propose such a set of APIs.
I have created a strawman in my Tuscany sandbox located at https://svn.apache.org/repos/asf/incubator/tuscany/sandbox/jboynes/sca-client/ and this page provides a walkthrough of the functionality.
The SCADomain interface represents a connection between unmanaged code and an SCA domain. The interface allows unmanaged to retrieve a CompositeContext for any component in the domain implemented by a composite (including the domain composite) using a URI that identifies the component.
A managed component may be injected with a ComponentContext interface to access information specific to the instance of the component within the domain. Currently the only information made available to a component is its URI within the domain. This provides a way for the component to uniquely identify itself.
Managed code can only obtain access to its ComponentContext through injection.
CompositeContext extends ComponentContext to provide unmanaged code with the ability to act as the implementation of the component implemented by the composite.
The locateService method allows unmanaged code to access services defined within the composite, specifically services defined by all <component> and <reference> definitions in the composite and those defined through promotion.
RequestContext is obtained through injection rather than from CompositeContext