7.2. Cryostat 1.2 메시지에 헤더 추가


7.2.1. 개요

Cryostat 메시지 헤더는 soap12:header 요소를 Cryostat 1.2 메시지에 추가하여 정의됩니다. soap12:header 요소는 바인딩의 입력,출력fault 요소의 선택적 자식입니다. Cryostat 헤더는 상위 메시지의 일부가 됩니다. Cryostat 헤더는 메시지와 메시지 부분을 지정하여 정의됩니다. 각 Cryostat 헤더는 하나의 메시지 부분만 포함할 수 있지만 필요에 따라 헤더를 많이 삽입할 수 있습니다.

7.2.2. 구문

Cryostat 헤더를 정의하는 구문은 예 7.3. “Cryostat 헤더 구문” 에 표시됩니다.

예 7.3. Cryostat 헤더 구문

<binding name="headwig">
  <soap12:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <operation name="weave">
      <soap12:operation soapAction="" style="documment"/>
      <input name="grain">
        <soap12:body ... />
        <soap12:header message="QName" part="partName"
                       use="literal|encoded"
                        encodingStyle="encodingURI"
                        namespace="namespaceURI" />
      </input>
...
</binding>

soap12:header 요소의 속성은 표 7.1. “soap12:header 속성” 에 설명되어 있습니다.

표 7.1. soap12:header 속성
속성설명

message

헤더에 삽입되는 부분이 사용되는 메시지의 정규화된 이름을 지정하는 필수 속성입니다.

부분

Cryostat 헤더에 삽입된 메시지 부분의 이름을 지정하는 필수 속성입니다.

사용

인코딩 규칙을 사용하여 메시지 부분을 인코딩할지 여부를 지정합니다. 인코딩된 것으로 설정하면 메시지 부분이 encodingStyle 속성 값으로 지정된 인코딩 규칙을 사용하여 인코딩됩니다. 리터럴 로 설정하면 메시지 부분은 참조되는 스키마 유형에 의해 정의됩니다.

encodingStyle

메시지를 구성하는 데 사용되는 인코딩 규칙을 지정합니다.

네임스페이스

use="encoded" 로 직렬화된 헤더 요소에 할당할 네임스페이스를 정의합니다.

7.2.3. 본문과 헤더 간에 메시지 분할

message part가 contract의 유효한 메시지 부분이 될 수 있습니다. 이 필드는 parent 메시지의 일부일 수도 있으며, 이 메시지는 Cryostat 본문으로 사용됩니다. 동일한 메시지에서 정보를 두 번 보내지 않을 수 있기 때문에 Cryostat 1.2 바인딩은 Cryostat 본문에 삽입되는 메시지 부분을 지정하는 수단을 제공합니다.

soap12:body 요소에는 공백으로 구분된 부분 목록을 사용하는 선택적 특성인 parts 가 있습니다. 부분이 정의되면 나열된 메시지 부분만 Cryostat 1.2 메시지의 본문에 삽입됩니다. 그런 다음 나머지 부분을 메시지의 헤더에 삽입할 수 있습니다.

참고

상위 메시지의 일부를 사용하여 Cryostat 헤더를 정의하면 Apache CXF가 자동으로 Cryostat 헤더에 채워집니다.

7.2.4. 예

예 7.4. “Cryostat 1.2 Binding with a Cryostat Header” 예 7.1. “시스템 인터페이스 순서 지정” 에 표시된 orderWidgets 서비스의 수정된 버전을 표시합니다. 이 버전은 각 주문에 요청 헤더와 응답에 xsd:base64binary 값이 할당되도록 수정되었습니다. 헤더는 widgetKey 메시지의 keyVal 부분으로 정의됩니다. 이 경우 입력 또는 출력 메시지의 일부가 아니므로 헤더를 생성하기 위해 애플리케이션 논리를 추가해야 합니다.

예 7.4. Cryostat 1.2 Binding with a Cryostat Header

<?xml version="1.0" encoding="UTF-8"?>
<definitions name="widgetOrderForm.wsdl"
    targetNamespace="http://widgetVendor.com/widgetOrderForm"
    xmlns="http://schemas.xmlsoap.org/wsdl/"
    xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
    xmlns:tns="http://widgetVendor.com/widgetOrderForm"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsd1="http://widgetVendor.com/types/widgetTypes"
    xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">

<types>
  <schema targetNamespace="http://widgetVendor.com/types/widgetTypes"
           xmlns="http://www.w3.org/2001/XMLSchema"
           xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
    <element name="keyElem" type="xsd:base64Binary"/>
  </schema>
</types>

<message name="widgetOrder">
  <part name="numOrdered" type="xsd:int"/>
</message>
<message name="widgetOrderBill">
  <part name="price" type="xsd:float"/>
</message>
<message name="badSize">
  <part name="numInventory" type="xsd:int"/>
</message>
<message name="widgetKey">
  <part name="keyVal" element="xsd1:keyElem"/>
</message>

<portType name="orderWidgets">
  <operation name="placeWidgetOrder">
    <input message="tns:widgetOrder" name="order"/>
    <output message="tns:widgetOrderBill" name="bill"/>
    <fault message="tns:badSize" name="sizeFault"/>
  </operation>
</portType>

<binding name="orderWidgetsBinding" type="tns:orderWidgets">
  <soap12:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <operation name="placeWidgetOrder">
      <soap12:operation soapAction="" style="document"/>
      <input name="order">
        <soap12:body use="literal"/>
        <soap12:header message="tns:widgetKey" part="keyVal"/>
      </input>
      <output name="bill">
        <soap12:body use="literal"/>
        <soap12:header message="tns:widgetKey" part="keyVal"/>
      </output>
      <fault name="sizeFault">
        <soap12:body use="literal"/>
      </fault>
  </operation>
</binding>
...
</definitions>

예 7.4. “Cryostat 1.2 Binding with a Cryostat Header” 에 표시된 대로 헤더 값이 입력 및 출력 메시지의 일부가 되도록 예 7.5. “Cryostat 1.2 Binding for orderWidgets with a Cryostat Header” 를 수정할 수 있습니다. 이 경우 keyVal 은 입력 및 출력 메시지의 일부입니다. soap12:body 요소에서 parts 속성은 keyVal 을 본문에 삽입하지 않도록 지정합니다. 그러나 헤더에 삽입됩니다.

예 7.5. Cryostat 1.2 Binding for orderWidgets with a Cryostat Header

<?xml version="1.0" encoding="UTF-8"?>
<definitions name="widgetOrderForm.wsdl"
    targetNamespace="http://widgetVendor.com/widgetOrderForm"
    xmlns="http://schemas.xmlsoap.org/wsdl/"
    xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
    xmlns:tns="http://widgetVendor.com/widgetOrderForm"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsd1="http://widgetVendor.com/types/widgetTypes"
    xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">

<types>
  <schema targetNamespace="http://widgetVendor.com/types/widgetTypes"
           xmlns="http://www.w3.org/2001/XMLSchema"
           xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
    <element name="keyElem" type="xsd:base64Binary"/>
  </schema>
</types>

<message name="widgetOrder">
  <part name="numOrdered" type="xsd:int"/>
  <part name="keyVal" element="xsd1:keyElem"/>
</message>
<message name="widgetOrderBill">
  <part name="price" type="xsd:float"/>
  <part name="keyVal" element="xsd1:keyElem"/>
</message>
<message name="badSize">
  <part name="numInventory" type="xsd:int"/>
</message>

<portType name="orderWidgets">
  <operation name="placeWidgetOrder">
    <input message="tns:widgetOrder" name="order"/>
    <output message="tns:widgetOrderBill" name="bill"/>
    <fault message="tns:badSize" name="sizeFault"/>
  </operation>
</portType>

<binding name="orderWidgetsBinding" type="tns:orderWidgets">
  <soap12:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <operation name="placeWidgetOrder">
      <soap12:operation soapAction="" style="document"/>
      <input name="order">
        <soap12:body use="literal" parts="numOrdered"/>
        <soap12:header message="tns:widgetOrder" part="keyVal"/>
      </input>
      <output name="bill">
        <soap12:body use="literal" parts="bill"/>
        <soap12:header message="tns:widgetOrderBill" part="keyVal"/>
      </output>
      <fault name="sizeFault">
        <soap12:body use="literal"/>
      </fault>
  </operation>
</binding>
...
</definitions>
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.