There are two service definitions in the camel-binding example:
- A component service which is tied to the implementation and private to the application.
- A composite service which is promoted from the component service and exposed to clients outside the application.
The component service has an explicit interface definition in switchyard.xml. The composite service does not because it defaults to using the contract of the component service it promotes. So, in that example, the composite service really does have a contract, it's just inherited from the component service. You can do the same thing in the tooling by creating the component service first and then promoting that service and accepting the same interface used on the component service (the tooling defaults to this setting).