12.6. Decoupled 모드에서 HTTP 전송 사용


12.6.1. 개요

일반적인 HTTP 요청/응답 시나리오에서는 요청과 응답이 동일한 HTTP 연결을 사용하여 전송됩니다. 서비스 공급자는 요청을 처리하고 적절한 HTTP 상태 코드 및 응답 내용을 포함하는 응답으로 응답합니다. 요청이 성공하면 HTTP 상태 코드가 200으로 설정됩니다.

WS-RM을 사용하거나 요청을 실행하는 데 시간이 오래 걸리는 경우와 같은 일부 경우 요청 및 응답 메시지를 분리하는 것이 좋습니다. 이 경우 서비스 공급자는 요청이 수신된 HTTP 연결의 백채널을 통해 소비자에게 202 Accepted 응답을 보냅니다. 그런 다음 요청을 처리하고 새 분리된 서버를 사용하여 응답을 다시 소비자로 보냅니다. 소비자 런타임은 들어오는 응답을 수신하고 애플리케이션 코드로 돌아가기 전에 적절한 요청과 관련이 있습니다.

12.6.2. 분리된 상호 작용 구성

분리된 모드에서 HTTP 전송을 사용하려면 다음을 수행해야 합니다.

  1. WS-Addressing을 사용하도록 소비자를 구성합니다.

    “WS-Addressing을 사용하도록 끝점 구성”을 참조하십시오.

  2. 분리된 엔드포인트를 사용하도록 소비자를 구성합니다.

    “소비자 구성”을 참조하십시오.

  3. 소비자가 WS-Addressing을 사용하도록 상호 작용하는 모든 서비스 공급자를 구성합니다.

    “WS-Addressing을 사용하도록 끝점 구성”을 참조하십시오.

12.6.3. WS-Addressing을 사용하도록 끝점 구성

소비자가 WS-Addressing을 사용하는 소비자 및 모든 서비스 공급자를 지정합니다.

끝점에서 WS-Addressing을 두 가지 방법 중 하나로 사용하도록 지정할 수 있습니다.

  • 예 12.19. “WSDL을 사용하여 WS-Addressing 활성화” 에 표시된 대로 wswa:UsingAddressing 요소를 끝점의 WSDL 포트 요소에 추가합니다.

    예 12.19. WSDL을 사용하여 WS-Addressing 활성화

    ...
    <service name="WidgetSOAPService">
      <port name="WidgetSOAPPort" binding="tns:WidgetSOAPBinding">
        <soap:address="http://widgetvendor.net/widgetSeller" />
        <wswa:UsingAddressing xmlns:wswa="http://www.w3.org/2005/02/addressing/wsdl"/>
      </port>
    </service>
    ...
  • 예 12.20. “정책을 사용하여 WS-Addressing 활성화” 와 같이 끝점의 WSDL 포트 요소에 WS-Addressing 정책을 추가합니다.

    예 12.20. 정책을 사용하여 WS-Addressing 활성화

    ...
    <service name="WidgetSOAPService">
      <port name="WidgetSOAPPort" binding="tns:WidgetSOAPBinding">
        <soap:address="http://widgetvendor.net/widgetSeller" />
        <wsp:Policy xmlns:wsp="http://www.w3.org/2006/07/ws-policy"> <wsam:Addressing xmlns:wsam="http://www.w3.org/2007/02/addressing/metadata"> <wsp:Policy/> </wsam:Addressing> </wsp:Policy>
      </port>
    </service>
    ...
참고

WS-Addressing 정책은 wswa:UsingAddressing WSDL 요소를 대체합니다.

12.6.4. 소비자 구성

http-conf:conduit 요소의 DecoupledEndpoint 특성을 사용하여 분리된 엔드포인트를 사용하도록 소비자 끝점을 구성합니다.

예 12.21. “Decoupled HTTP Endpoint를 사용하도록 소비자 구성” 분리된 끝점을 사용하도록 예 12.19. “WSDL을 사용하여 WS-Addressing 활성화” 에 정의된 끝점을 설정하는 구성을 표시합니다. 이제 소비자는 http://widgetvendor.net/widgetSellerInbox 에서 모든 응답을 수신합니다.

예 12.21. Decoupled HTTP Endpoint를 사용하도록 소비자 구성

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:http="http://cxf.apache.org/transports/http/configuration"
       xsi:schemaLocation="http://cxf.apache.org/transports/http/configuration
                             http://cxf.apache.org/schemas/configuration/http-conf.xsd
                           http://www.springframework.org/schema/beans
                             http://www.springframework.org/schema/beans/spring-beans.xsd">

  <http:conduit name="{http://widgetvendor.net/services}WidgetSOAPPort.http-conduit">
    <http:client DecoupledEndpoint="http://widgetvendor.net:9999/decoupled_endpoint" />
  </http:conduit>
</beans>

12.6.5. 메시지가 처리되는 방법

HTTP 전송을 분리된 모드에서 사용하면 HTTP 메시지 처리에 복잡한 추가 계층을 추가합니다. 애플리케이션의 구현 수준 코드에 더 추가된 복잡성은 투명하지만 디버깅 이유로 발생하는 상황을 이해하는 것이 중요할 수 있습니다.

그림 12.1. “분리된 HTTP 전송을 위한 메시지 흐름” 분리된 모드에서 HTTP를 사용할 때 메시지 흐름을 표시합니다.

그림 12.1. 분리된 HTTP 전송을 위한 메시지 흐름

분리된 메시지 교환에는 15단계가 있습니다.

요청은 다음 프로세스를 시작합니다.

  1. 소비자 구현은 작업을 호출하고 요청 메시지가 생성됩니다.
  2. WS-Addressing 계층은 WS-A 헤더를 메시지에 추가합니다.

    분리된 엔드포인트가 소비자 구성에 지정되면 분리된 엔드포인트의 주소가 WS-A ReplyTo 헤더에 배치됩니다.

  3. 메시지가 서비스 공급자에게 전송됩니다.
  4. 서비스 공급자가 메시지를 수신합니다.
  5. 소비자의 요청 메시지는 공급자의 WS-A 계층에 전달됩니다.
  6. WS-A ReplyTo 헤더가 익명으로 설정되지 않았기 때문에 공급자는 HTTP 상태 코드가 202로 설정된 메시지를 다시 보냅니다. 요청이 수신되었음을 확인합니다.
  7. HTTP 계층은 원래 연결의 백 채널을 사용하여 202 Accepted 메시지를 소비자에게 다시 보냅니다.
  8. 소비자는 원래 메시지를 보내는 데 사용된 HTTP 연결의 백채널에서 202 Accepted 응답을 수신합니다.

    소비자가 202 Accepted 응답을 수신하면 HTTP 연결이 종료됩니다.

  9. 요청이 처리된 서비스 공급자의 구현에 전달됩니다.
  10. 응답이 준비되면 WS-A 계층으로 전달됩니다.
  11. WS-A 계층은 WS-Addressing 헤더를 응답 메시지에 추가합니다.
  12. HTTP 전송은 소비자의 분리된 엔드포인트에 응답을 보냅니다.
  13. 소비자의 분리된 엔드포인트는 서비스 공급자로부터 응답을 수신합니다.
  14. 응답은 WS-A RelatesTo 헤더를 사용하여 적절한 요청과 상관 관계가 있는 소비자의 WS-A WS-A 계층에 전달됩니다.
  15. 상관된 응답은 클라이언트 구현으로 반환되고 호출 호출은 차단되지 않습니다.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.