Bindings are Fabric3 extensions that enable remote communication over a particular transport protocol, for example, Web Services, RMI, JMS, Hessian, or AMQP. Bindings are specified on services and references to manadate a particular communication protocol. For example, the following uses the Hessian binding to communicate with the "SomeService":
<composite..>
<component name="clientComponent">
<implementation.java class="foo.TestComponent"/>
<reference name="someService">
<hessian:binding.hessian uri="http://someprovider.com/someService"/>
</reference>
</component>
</composite>
Similarly, SomeService could be bound with Hessian:
<composite..>
<service name="someService" promote="someComponent">
<interface.java interface="bar.SomeService"/>
<hessian:binding.hessian uri="/someService" />
</service>
<component name="someComponent">
<implementation.java class="bar.SomeComponent"/>
</component>
</composite>
Bindings should generally only be specified when publishing services for access outside of the domain or when a reference is targeted to a service outside of the domain. However, due to a limitation with the 0.1 runtimes, bindings must be specified for all remote references. This limitation will be removed in the 0.3 release.
Bindings can be changed without impacting code by modifying the composite configuration. A future version of the runtime will allow bindings to be dynamically changed either through human intervention or according to a policy such as an SLA:

Installing Binding Extensions
In order to use a binding, it must be installed as a runtime extension. Bindings extensions are contributed to a runtime as a composites (they are themselves SCA components). The actualy contribution process varies by host environment but generally involves extracting the binding distribution and configuring the Fabric3 runtime to include the extension. Please see the specific host environment documentation for details.

