Red Hat Training
A Red Hat training course is available for Red Hat Fuse
6.2. Component Contracts
Component Contract can be either a Component Service or a Component Reference. A Component Service is used to expose the functionality of an implementation as a service. A Component Reference allows a component to consume other services. A component contract can be defined in three different ways in SwitchYard:
- Java: Using a Java interface.
- WSDL: Using a port type in a WSDL file.
- ESB: Using a virtual interface definition. (No real file is used).
A component contract in SwitchYard has the following characteristics. All are optional:
- argument: If used, this is the message content. It is optional as there can be operations that don’t expect a message (for example, REST GET, Scheduled operations). Used in Exchanges of type IN_ONLY and IN_OUT.
- return type: If used, this is the message content for the response. Used only in Exchanges of type IN_OUT.
- exceptions: If used, this is the message content for the response in case of an Exception. Used in Exchanges of type IN_ONLY and IN_OUT.
Contracts in Camel can be defined with empty parameters, and users can still work with the message content.
A Java contract is defined by a Java Interface.
Java components require Java contracts.
A WSDL contract is defined by a port type in a WSDL file.
An ESB contract is a virtual contract (no file required) that declares the types of the input, output and exception types.
ESB contract may be used in components with one single operation.