Chapter 11. Understanding How Endpoints are Defined in WSDL
Endpoints represent an instantiated service. They are defined by combining a binding and the networking details used to expose the endpoint.
An endpoint can be thought of as a physical manifestation of a service. It combines a binding, which specifies the physical representation of the logical data used by a service, and a set of networking details that define the physical connection details used to make the service contactable by other endpoints.
CXF providers are servers for CXF consumers, which correspond to clients. If you are using the CXF (
camel-cxf) component as the starting endpoint in a route, then the endpoint is both a Camel consumer and a CXF provider. If you are using the Camel CXF component, as an ending endpoint in a route, then the endpoint is both a Camel producer and a CXF consumer.
Endpoints and services
In the same way a binding can only map a single interface, an endpoint can only map to a single service. However, a service can be manifested by any number of endpoints. For example, you could define a ticket selling service that was manifested by four different endpoints. However, you could not have a single endpoint that manifested both a ticket selling service and a widget selling service.
The WSDL elements
Endpoints are defined in a contract using a combination of the WSDL
service element and the WSDL
port element. The
service element is a collection of related
port elements. The
port elements define the actual endpoints.
service element has a single attribute,
name, that specifies a unique name. The
service element is used as the parent element of a collection of related
port elements. WSDL makes no specification about how the
port elements are related. You can associate the
port elements in any manner you see fit.
port element has a has a
binding attribute, that specifies the binding used by the endpoint and is a reference to the
wsdl:binding element. It also includes the
name attribute, which is a mandatory attribute that provides a unique name among all ports. The
port element is the parent element of the elements that specify the actual transport details used by the endpoint. The elements used to specify the transport details are discussed in the following sections.
Adding endpoints to a contract
Apache CXF provides command line tools that can generated endpoints for predefined service interface and binding combinations.
The tools will add the proper elements to your contract for you. However, it is recommended that you have some knowledge of how the different transports used in defining an endpoint work.
You can also add an endpoint to a contract using any text editor. When you hand edit a contract, you are responsible for ensuring that the contract is valid.
Endpoint definitions are built using extensions defined for each of the transports Apache CXF supports. This includes the following transports:
- Java Messaging Service