이 콘텐츠는 선택한 언어로 제공되지 않습니다.

Chapter 28. Consumer Endpoints


Abstract

A consumer endpoint listens for requests from external endpoints and delivers responses back to the requesting endpoint. It is configured using a single XML element that specifies the WSDL document defining the endpoint.
Important
The Java Business Integration components of Red Hat JBoss Fuse are considered deprecated. You should consider migrating any JBI applications to OSGi.

Overview

Consumer endpoints play the role of consumer from the vantage point of other endpoints running inside of the ESB. However, from outside of the ESB a consumer endpoint plays the role of a service provider. As shown in Figure 28.1, “Consumer Endpoint”, consumer endpoints listen from incoming requests from external endpoints. When it receives a request, the consumer passes it off to the NMR fro delivery to endpoint that will process the request. If a response is generated, the consumer endpoint delivers the response back to the external endpoint.

Figure 28.1. Consumer Endpoint

Important
Because consumer endpoint's behave like service providers to external endpoints, you configure the runtime behavior of the transport using the provider-specific WSDL entries.

Procedure

To configure a consumer endpoint do the following:
  1. Add a consumer element to your xbean.xml file.
  2. Add a wsdl attribute to the consumer element.
  3. If your WSDL defines more than one service, you will need to specify a value for the service attribute.
  4. If the service you choose defines more than one endpoint, you will need to specify a value for the endpoint attribute.
  5. Specify the details for the target of the requests received by the endpoint.
  6. If your endpoint is going to be receiving binary attachments set its mtomEnabled attribute to true.
  7. If your endpoint does not need to process the JBI wrapper set its useJbiWrapper attribute to false.
  8. If you are using any of the advanced features, such as WS-Addressing or WS-Policy, specify a value for the busCfg attribute.
    See ???.

Specifying the WSDL

The wsdl attribute is the only required attribute to configure a consumer endpoint. It specifies the location of the WSDL document that defines the endpoint being exposed. The path used is relative to the top-level of the exploded service unit.
Tip
If the WSDL document defines a single service with a single endpoint, then you do not require any additional information to expose a consumer endpoint.
Example 28.1, “Minimal Consumer Endpoint Configuration” shows the minimal configuration for a consumer endpoint.

Example 28.1. Minimal Consumer Endpoint Configuration

<beans xmlns:cxfbc="http://servicemix.apache.org/cxfbc/1.0"
       ... >
  ...
  <cxfbc:consumer wsdl="/wsdl/widget.wsdl" />

  ...
</beans>
Copy to Clipboard Toggle word wrap
For information on creating a WSDL document see ???.

Specifying the endpoint details

If the endpoint's WSDL document defines a single service with a single endpoint, the ESB can easily determine which endpoint to use. It will use the values from the WSDL document to specify the service name, endpoint name and interface name for the instantiated endpoint.
However, if the endpoint's WSDL document defines multiple services or if it defines multiple endpoints for a service, you will need to provide the consumer endpoint with additional information so that it can determine the proper definition to use. What information you need to provide depends on the complexity of the WSDL document. You may need to supply values for both the service name and the endpoint name, or you may only have to supply one of these values.
If the WSDL document contains more than one service element you will need to specify a value for the consumer's service attribute. The value of the consumer's service attribute is the QName of the WSDL service element that defines the desired service in the WSDL document. For example, if you wanted your endpoint to use the WidgetSalesService in the WSDL shown in Example 28.2, “WSDL with Two Services” you would use the configuration shown in Example 28.3, “Consumer Endpoint with a Defined Service Name”.

Example 28.2. WSDL with Two Services

<definitions ...
             xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
             targetNamespace="http://demos.widgetVendor.com" ...>
  ...
  <service name="WidgetSalesService">
    <port binding="WidgetSalesBinding" name="WidgetSalesPort">
      <soap:address location="http://widget.sales.com/index.xml">
    </port>
  </service>

  <service name="WidgetInventoryService">
    <port binding="WidgetInventoryBinding" name="WidgetInventoryPort">
      <soap:address location="http://widget.inventory.com/index.xml">
    </port>
  </service>
  ...
<definitions>
Copy to Clipboard Toggle word wrap

Example 28.3. Consumer Endpoint with a Defined Service Name

<beans xmlns:cxfbc="http://servicemix.apache.org/cxfbc/1.0"
       xmlns:widgets="http://demos.widgetVendor.com"
       ... >
  ...
  <cxfbc:consumer wsdl="/wsdl/widget.wsdl"
                  service="widgets:WidgetSalesService" />

  ...
</beans>
Copy to Clipboard Toggle word wrap
If the WSDL document's service definition contains more than one endpoint, then you will need to provide a value for the consumer's endpoint attribute. The value of the endpoint attribute corresponds to the value of the WSDL port element's name attribute. For example, if you wanted your endpoint to use the WidgetEasternSalesPort in the WSDL shown in Example 28.4, “Service with Two Endpoints” you would use the configuration shown in Example 28.5, “Consumer Endpoint with a Defined Endpoint Name”.

Example 28.4. Service with Two Endpoints

<definitions ...
             xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
             targetNamespace="http://demos.widgetVendor.com" ...>
  ...
  <service name="WidgetSalesService">
    <port binding="WidgetSalesBinding" name="WidgetWesternSalesPort">
      <soap:address location="http://widget.sales.com/index.xml">
    </port>
    <port binding="WidgetSalesBinding" name="WidgetEasternSalesPort">
      <jms:address jndiConnectionFactoryName="ConnectionFactory"
                   jndiDestinationName="dynamicQueues/test.Celtix.jmstransport" >
        <jms:JMSNamingProperty name="java.naming.factory.initial"
                               value="org.activemq.jndi.ActiveMQInitialContextFactory" />
        <jms:JMSNamingProperty name="java.naming.provider.url"
                               value="tcp://localhost:61616" />
      </jms:address>
    </port>
  </service>
  ...
<definitions>
Copy to Clipboard Toggle word wrap

Example 28.5. Consumer Endpoint with a Defined Endpoint Name

<beans xmlns:cxfbc="http://servicemix.apache.org/cxfbc/1.0"
       xmlns:widgets="http://demos.widgetVendor.com"
       ... >
  ...
  <cxfbc:consumer wsdl="/wsdl/widget.wsdl"
                  endpoint="WidgetEasternSalesService" />
  ...
</beans>
Copy to Clipboard Toggle word wrap

Specifying the target endpoint

The consumer endpoint will determine the target endpoint in the following manner:
  1. If you explicitly specify an endpoint using both the targetService attribute and the targetEndpoint attribute, the ESB will use that endpoint.
  2. If you only specify a value for the targetService attribute, the ESB will attempt to find an appropriate endpoint on the specified service.
  3. If you specify an the name of an interface that can accept the message using the targetInterface attribute, the ESB will attempt to locate an endpoint that implements the specified interface and direct the messages to it.
  4. If you do not use any of the target attributes, the ESB will use the values used in configuring the endpoint's service name and endpoint name to determine the target endpoint.
Example 28.6, “Consumer Endpoint Configuration Specifying a Target Endpoint” shows the configuration for a consumer endpoint that specifies the target endpoint to use.

Example 28.6. Consumer Endpoint Configuration Specifying a Target Endpoint

<beans xmlns:cxfbc="http://servicemix.apache.org/cxfbc/1.0"
       xmlns:widgets="http://demos.widgetVendor.com"
       ... >
  ...
  <cxfbc:consumer wsdl="/wsdl/widget.wsdl"
                  targetEndpoint="WidgetSalesTargetPort"
                  targetService="widgets:WidgetSalesTargetService" />

  ...
</beans>
Copy to Clipboard Toggle word wrap
Important
If you specify values for more than one of the target attributes, the consumer endpoint will use the most specific information.
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat