8장. 첨부 파일과 함께 Cryostat를 사용하여 바이너리 데이터 전송
초록
Cryostat 첨부 파일은 바이너리 데이터를 Cryostat 메시지의 일부로 전송하기 위한 메커니즘을 제공합니다. 첨부 파일과 함께 Cryostat 메시지를 MIME 다중 파트 메시지로 정의해야 합니다.
8.1. 개요
Cryostat 메시지는 일반적으로 바이너리 데이터를 전송하지 않습니다. 그러나 W3C Cryostat 1.1 사양을 사용하면 MIME 다중 파트/관련 메시지를 사용하여 Cryostat 메시지에서 바이너리 데이터를 보낼 수 있습니다. 이 기술은 첨부 파일과 함께 Cryostat를 사용하는 것을 호출합니다. Cryostat 첨부 파일은 첨부 파일이 있는 W3C의 Cryostat 메시지에 정의되어 있습니다.
8.2. 네임스페이스
MIME 다중 파트/관련 메시지를 정의하는 데 사용되는 WSDL 확장은 http://schemas.xmlsoap.org/wsdl/mime/ 네임스페이스에 정의됩니다.
다음 토론에서는 이 네임스페이스 앞에 mime
이 붙은 것으로 가정합니다. 이를 설정하는 WSDL 정의
요소의 항목은 예 8.1. “계약의 MIME 네임스페이스 사양” 에 표시됩니다.
예 8.1. 계약의 MIME 네임스페이스 사양
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
8.3. 메시지 바인딩 변경
기본 Cryostat 바인딩에서 입력
,출력
및 fault
요소의 첫 번째 자식 요소는 데이터를 나타내는 Cryostat 메시지의 본문을 설명하는 soap:body
요소입니다. 첨부 파일과 함께 Cryostat를 사용할 때 soap:body
요소는 mime:multipartRelated
요소로 교체됩니다.
WSDL은 오류
메시지에 대해 mime:multipartRelated
사용을 지원하지 않습니다.
mime:multipartRelated
요소는 Apache CXF에 메시지 본문이 바이너리 데이터를 포함하는 다중 파트 메시지임을 알립니다. 요소의 내용은 메시지 및 해당 콘텐츠의 부분을 정의합니다. MIME:multipartRelated
요소에는 메시지의 개별 부분을 설명하는 하나 이상의 mime:part
요소가 포함됩니다.
첫 번째 mime:part
요소에는 일반적으로 기본 Cryostat 바인딩에 표시되는 soap:body
요소가 포함되어야 합니다. 나머지 mime:part
요소는 메시지에 전송되는 첨부 파일을 정의합니다.
8.4. MIME multipart 메시지 설명
MIME multipart 메시지는 여러 mime:part
요소를 포함하는 mime:multipartRelated
요소를 사용하여 설명됩니다. MIME multipart 메시지를 완전히 설명하려면 다음을 수행해야 합니다.
-
MIME multipart 메시지로 보내는
입력
또는출력
메시지 내부에서mime:mulipartRelated
요소를 enclosing 메시지의 첫 번째 자식 요소로 추가합니다. -
mime:part
하위 요소를mime:multipartRelated
요소에 추가하고name
속성을 고유한 문자열로 설정합니다. soap:body
요소를mime:part
요소의 자식으로 추가하고 해당 특성을 적절하게 설정합니다.참고계약에 기본 Cryostat 바인딩이 있는 경우 기본 바인딩에서 MIME multipart 메시지로
soap:body
요소를 해당 메시지에서 복사할 수 있습니다.-
mime:part
하위 요소를mime:multipartReleated
요소에 추가하고name
속성을 고유한 문자열로 설정합니다. mime:content
하위 요소를mime:part
요소에 추가하여 메시지의 이 부분의 내용을 설명합니다.MIME 메시지 부분의 내용을 완전히 설명하려면
mime:content
요소에는 다음과 같은 속성이 있습니다.표 8.1. MIME:content 속성 속성 설명 + 부모 메시지 정의에서 알로어에 배치되는 MIME multi
part
메시지의 콘텐츠로 사용되는 WSDL 메시지 부분의 이름을 지정합니다.+
이 메시지 부분에 있는 데이터의 MIME 유형입니다. MIME 유형은 유형 및 구문 유형
/
하위 유형을 사용하여 하위 유형으로 정의됩니다.+
image/jpeg
및text/plain
과 같은 다양한 MIME 유형이 있습니다. MIME 유형은 INA(Internet Assigned Numbers Authority)에 의해 유지 관리되며, MIME(Multipurpose Internet Mail Extensions) 파트 1: Format of Internet Message Bodies and Multipurpose Internet Mail Extensions (MIME) part 2 에 자세히 설명되어 있습니다.+
- 추가 MIME 부분에 대해 [i303819] 및 [i303821] 단계를 반복합니다.
8.5. 예
예 8.2. “Attachments와 함께 Cryostat를 사용한 계약” X-ray를 JPEG 형식으로 저장하는 서비스를 정의하는 WSDL 조각이 표시됩니다. 이미지 데이터인 x
Cryostat는 xsd:base64binary
로 저장되며 MIME multipart 메시지의 두 번째 부분인 imageData
에 패키징되어 있습니다. 입력 메시지의 나머지 두 부분인 patientName
및 patientNumber
는 MIME 다중 파트 이미지의 첫 번째 부분에서 192.0.2. 본문의 일부로 전송됩니다.
예 8.2. Attachments와 함께 Cryostat를 사용한 계약
<?xml version="1.0" encoding="UTF-8"?> <definitions name="XrayStorage" targetNamespace="http://mediStor.org/x-rays" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://mediStor.org/x-rays" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <message name="storRequest"> <part name="patientName" type="xsd:string"/> <part name="patientNumber" type="xsd:int"/> <part name="xRay" type="xsd:base64Binary"/> </message> <message name="storResponse"> <part name="success" type="xsd:boolean"/> </message> <portType name="xRayStorage"> <operation name="store"> <input message="tns:storRequest" name="storRequest"/> <output message="tns:storResponse" name="storResponse"/> </operation> </portType> <binding name="xRayStorageBinding" type="tns:xRayStorage"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="store"> <soap:operation soapAction="" style="document"/> <input name="storRequest"> <mime:multipartRelated> <mime:part name="bodyPart"> <soap:body use="literal"/> </mime:part> <mime:part name="imageData"> <mime:content part="xRay" type="image/jpeg"/> </mime:part> </mime:multipartRelated> </input> <output name="storResponse"> <soap:body use="literal"/> </output> </operation> </binding> <service name="xRayStorageService"> <port binding="tns:xRayStorageBinding" name="xRayStoragePort"> <soap:address location="http://localhost:9000"/> </port> </service> </definitions>