Hi, To my understanding, bindings can apply to services and references of a composite. A binding can be used for:
1) Both services and references 2) References only 3) Services only In some cases, a binding may take different set of metadata depending on whether it's used by a service or a reference. For example, for a TCP/IP binding, the reference needs to know the host name and port number of the target TCP/IP server. But if you wants to publish your component as a service over TCP/IP, maybe only the port number (hostname is always localhost) is good enough. <reference> <tcpip:binding.tcpip host="a.com" port="8888"/> </reference> <service> <tcpip:binding.tcpip port="8888"/> </service> What's the best practice here to model TCP/IP binding? I can imagine three ways: 1) One TCP/IP binding to contain all properties required for both services and references 2) One base TCP/IP binding and two sub types: TCP/IP reference binding and TCP/IP service binding 3) Two different TCP/IP bindings, one for references and one for services What's the implication on the BindingBuilder SPI if the binding is asymetric for references and services? I assume one of the following build() methods will be NOP if a given binding can only be used by either references or services. public interface BindingBuilder<B extends Binding> { SCAObject build(CompositeComponent parent, BoundServiceDefinition<B> boundServiceDefinition, DeploymentContext deploymentContext); SCAObject build(CompositeComponent parent, BoundReferenceDefinition<B> boundReferenceDefinition, DeploymentContext deploymentContext); } Please clarify if I misunderstand something here. Thanks, Raymond