You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@tuscany.apache.org by "Millies, Sebastian" <Se...@ids-scheer.com> on 2010/09/21 16:20:19 UTC

Q: Best practice for making service references available in a component?

Hello there,

this is a question about coding style. SCA components are coarse grained,
i. e. the actual component implementation can consist of many classes, only
one of which is defined as _the_ component implementation class in the composite
XML. It is only on this class that annotations like @Reference can be used to 
inject dependencies to other services. It is likely, however, that the referenced 
services really need to be called from one of the other classes in the component
implementation.

How do you pass the values of these reference variables to those ordinary Java
classes? Is there a special "SCA way" of doing this, perhaps making these References
globally available in a component, or do you just use normal Java programming idioms 
like property setters, or constructor/method parameters?

-- Sebastian
 

Re: Q: Best practice for making service references available in a component?

Posted by Simon Nash <na...@apache.org>.
Millies, Sebastian wrote:
> Hello there,
> 
> this is a question about coding style. SCA components are coarse grained,
> i. e. the actual component implementation can consist of many classes, only
> one of which is defined as _the_ component implementation class in the composite
> XML. It is only on this class that annotations like @Reference can be used to 
> inject dependencies to other services. It is likely, however, that the referenced 
> services really need to be called from one of the other classes in the component
> implementation.
> 
> How do you pass the values of these reference variables to those ordinary Java
> classes? Is there a special "SCA way" of doing this, perhaps making these References
> globally available in a component, or do you just use normal Java programming idioms 
> like property setters, or constructor/method parameters?
> 
> -- Sebastian
>  
There isn't any specific SCA way of doing this.  You can treat
the injected proxy as a regular Java object and pass it around
however you wish.  However it's useful to bear in mind that SCA
offers 3 different ways to obtain the reference proxy:
   as a constructor parameter
   as a setter parameter
   as an injected field

Depending on how you want to pass the value around, one or other
of these might be more appropriate.

   Simon