6.2. Cryostat 1.1 바인딩에 Syslog 헤더 추가
6.2.1. 개요
Cryostat 헤더는 soap:header
요소를 기본 Cryostat 1.1 바인딩에 추가하여 정의됩니다. soap:header
요소는 바인딩의 입력
,출력
및 fault
요소의 선택적 자식입니다. Cryostat 헤더는 상위 메시지의 일부가 됩니다. Cryostat 헤더는 메시지와 메시지 부분을 지정하여 정의됩니다. 각 Cryostat 헤더는 하나의 메시지 부분만 포함할 수 있지만 필요에 따라 많은 Cryostat 헤더를 삽입할 수 있습니다.
6.2.2. 구문
Cryostat 헤더를 정의하는 구문은 예 6.3. “Cryostat 헤더 구문” 에 표시됩니다. soap:header
의 message
속성은 해당 부분이 헤더에 삽입되는 메시지의 정규화된 이름입니다. part
속성은 Cryostat 헤더에 삽입된 메시지 부분의 이름입니다. Cryostat 헤더는 항상 문서 스타일이므로, ESP 헤더에 삽입된 WSDL 메시지 부분은 요소를 사용하여 정의해야 합니다. message
및 part
특성을 함께 사용하여 Cryostat 헤더에 삽입할 데이터를 완전히 설명합니다.
예 6.3. Cryostat 헤더 구문
<binding name="headwig"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="weave"> <soap:operation soapAction="" style="document"/> <input name="grain"> <soap:body ... /> <soap:header message="QName" part="partName"/> </input> ... </binding>
soap:header
는 필수 메시지
및 일부
속성뿐만 아니라 네임스페이스
, use
, encodingStyle
특성도 지원합니다. 이러한 속성은 soap:body
와 동일한 soap:header
에 대해 작동합니다.
6.2.3. 본문과 헤더 간에 메시지 분할
message part가 contract의 유효한 메시지 부분이 될 수 있습니다. 이 필드는 parent 메시지의 일부일 수도 있으며, 이 메시지는 Cryostat 본문으로 사용됩니다. 동일한 메시지에 정보를 두 번 보낼 가능성은 낮기 때문에 Cryostat 바인딩은 Cryostat 본문에 삽입되는 메시지 부분을 지정하는 수단을 제공합니다.
soap:body
요소에는 공백으로 구분된 구성 요소 목록을 사용하는 선택적 속성인 parts
가 있습니다. 부분이
정의되면 나열된 메시지 부분만 Cryostat 본문에 삽입됩니다. 그런 다음 나머지 부분을 Cryostat 헤더에 삽입할 수 있습니다.
상위 메시지의 일부를 사용하여 Cryostat 헤더를 정의하면 Apache CXF가 자동으로 Cryostat 헤더에 채워집니다.
6.2.4. 예
예 6.4. “Cryostat 헤더를 사용한 Cryostat 1.1 바인딩” 예 6.1. “시스템 인터페이스 순서 지정” 에 표시된 orderWidgets
서비스의 수정된 버전을 표시합니다. 이 버전은 각 주문에 요청 및 응답의 Cryostat 헤더에 배치된 xsd:base64binary
값이 적용되도록 수정되었습니다. Cryostat 헤더는 widgetKey
메시지의 keyVal
부분으로 정의됩니다. 이 경우 입력 또는 출력 메시지의 일부가 아니므로 애플리케이션 논리에 Cryostat 헤더를 추가해야 합니다.
예 6.4. Cryostat 헤더를 사용한 Cryostat 1.1 바인딩
<?xml version="1.0" encoding="UTF-8"?> <definitions name="widgetOrderForm.wsdl" targetNamespace="http://widgetVendor.com/widgetOrderForm" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 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"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="placeWidgetOrder"> <soap:operation soapAction="" style="document"/> <input name="order"> <soap:body use="literal"/> <soap:header message="tns:widgetKey" part="keyVal"/> </input> <output name="bill"> <soap:body use="literal"/> <soap:header message="tns:widgetKey" part="keyVal"/> </output> <fault name="sizeFault"> <soap:body use="literal"/> </fault> </operation> </binding> ... </definitions>
헤더 값이 입력 및 출력 메시지의 일부가 되도록 예 6.4. “Cryostat 헤더를 사용한 Cryostat 1.1 바인딩” 를 수정할 수도 있습니다.