XML 스키마 정의를 SDO 유형 시스템에 맵핑
각 XML 스키마 유형은 SDO 유형에 맵핑됩니다. 이 맵핑을 사용하여 프로그램이 중개하는 메시지의 데이터 그래프를 탐색하는 코드를 개발하는 데 도움이 됩니다.
중개에서 지원되는 SDO(Service Data Objects)의 버전은 버전 1입니다.
XML 스키마는 메시지 파트를 설명하는 WSDL 섹션과 SOAP 헤더에서 임베디드될 수 있습니다. 그러나 SOAP 헤더 설명은 별도의 스키마로 사용 가능할 수 있으며, 이 경우 런타임 시 일치되는 헤더가 있는 메시지를 처리하는 데 사용될 수 있는 SDO 저장소로 로드해야 합니다.
Java 클래스 맵핑에 대한 스키마
각 XML 스키마 복합 유형은 SDO 유형에 맵핑됩니다. 복합 유형인 요소가 SDO 데이터 오브젝트의 인스턴스로 표시됨을 의미합니다. 이 유형에는 스키마 유형 정의에 포함된 각 요소, 속성 또는 와일드카드에 대한 특성이 있습니다.
인스턴스는 설정되었던 각 특성에 대한 값을 포함합니다. 특성이 스키마 복합 유형으로 맵핑되면 값은 다른 SDO 데이터 오브젝트입니다. 특성이 스키마 단순 유형으로 맵핑되면 값은 다음 테이블에서 표시된 대로 Java™ 클래스의 인스턴스입니다.
스키마 유형 | Java 클래스 | 참고 |
---|---|---|
anyURI | java.lang.String | |
base64Binary | byte[] | 참고 2 참조 |
부울 | java.lang.Boolean/ boolean | 참고 1 참조 |
바이트 | java.lang.Byte / byte | 참고 1 참조 |
날짜 | java.lang.String | |
dateTime | java.lang.String | |
10진수 | java.math.BigDecimal | |
double | java.lang.Double / double | 참고 1 참조 |
기간 | java.lang.String | |
ENTITIES | java.util.List | |
ENTITY | java.lang.String | |
float | ava.lang.Float / float | 참고 1 참조 |
gDay | java.lang.String | |
gMonth | java.lang.String | |
gMonthDay | java.lang.String | |
gYear | java.lang.String | |
gYearMonth | java.lang.String | |
hexBinary | byte[] | 참고 2 참조 |
ID | java.lang.String | |
IDREF | java.lang.String | |
IDREFS | java.util.List | |
int | java.lang.Integer / int | 참고 1 참조 |
정수 | java.math.BigInteger | |
language | java.lang.String | |
long | java.lang.Long / long | 참고 1 참조 |
Name | java.lang.String | |
NCName | java.lang.String | |
negativeInteger | java.math.BigInteger | |
NKTOKENS | java.util.List | |
NMTOKEN | java.lang.String | |
nonNegativeInteger | java.math.BigInteger | |
nonPositiveInteger | java.math.BigInteger | |
normalisedString | java.lang.String | |
NOTATION | javax.xml.namespace.QName | |
positiveInteger | java.math.BigInteger | |
QName | javax.xml.namespace.QName | |
short | java.lang.Short / short | 참고 1 참조 |
문자열 | java.lang.String | |
time | java.lang.String | |
토큰 | java.lang.String | |
unsignedByte | java.lang.Short / short | 참고 1 참조 |
unsignedInt | java.lang.Long / long | 참고 1 참조 |
unsignedLong | java.math.BigInteger | |
unsignedShort | java.lang.Integer / int | 참고 1 참조 |
- SDO는 자동으로 기본 요소(int, long 등)를 필요에 따라 오브젝트로 변환합니다. 일반 get 및 set 메소드뿐만 아니라 특별한 메소드의 혼합(getInt, setInt, getLong, setLong)을 사용할 수 있음을 의미합니다.
- 바이트 배열이 변경되기 쉽기 때문에 이를 데이터 오브젝트에서 다시 설정하지 않고 값을 업데이트할 수 있습니다. 그러나 업데이트가 되면 데이터 오브젝트는 내재적 업데이트를 알지 못할 수 있습니다. 바이트 배열 값으로 작업할 때, 항상 setBytes() 메소드를 사용하여 명시적으로 데이터 오브젝트를 업데이트합니다.
글로벌 요소 및 속성 작업
스키마가 SDO로 맵핑되면, 특수 SDO 유형, 일반적으로 'DocumentRoot'라는 특수 SDO 유형이 정의됩니다. 이 유형은 스키마의 모든 글로벌 요소와 속성에 대한 컨테이너입니다. 글로벌 요소나 속성에 대한 SDO 특성을 찾으려고 할 때마다 ‘DocumentRoot' 유형을 찾은 다음 그 내에서 적절한 특성을 찾아야 합니다.
다음 스키마는 웹 서비스 메시지의 레이아웃을 정의합니다. 이 스키마를 웹 서비스 메시지의 SDO 데이터 그래프 맵핑의 정보와 비교하여 조치에서 SDO 맵핑에 대한 스키마를 볼 수 있습니다.
<?xml version="1.0"?>
<xsd:schema
targetNamespace="http://www.ibm.com/ns/2004/05/webservices/messagemodel"
xmlns:tns="http://www.ibm.com/ns/2004/05/webservices/messagemodel"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<xsd:import namespace="http://schemas.xmlsoap.org/soap/envelope/"/>
<xsd:element name="Info">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="operationName" nillable="true" type="xsd:string"/>
<xsd:element name="messageName" nillable="true" type="xsd:string"/>
<xsd:element name="messageType" nillable="true" type="xsd:string"/>
<xsd:element name="headers" type="tns:HeaderEntryType" maxOccurs="unbounded"/>
<xsd:element name="attachments" type="tns:AttachmentEntryType" maxOccurs="unbounded"/>
<xsd:element name="body" type="tns:BodyType"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="BodyType" abstract="true"/>
<xsd:complexType name="HeaderEntryType" abstract="true"/>
<xsd:complexType name="AttachmentEntryType" abstract="true"/>
<xsd:complexType name="SOAPFaultBody">
<xsd:complexContent>
<xsd:extension base="tns:BodyType">
<xsd:sequence>
<xsd:element name="faultcode" type="xsd:QName"/>
<xsd:element name="faultstring" type="xsd:string"/>
<xsd:element name="faultactor" type="xsd:anyURI" minOccurs="0"/>
<xsd:element name="detail" type="soap:detail" minOccurs="0"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="SOAP_1_1_HeaderEntryType">
<xsd:complexContent>
<xsd:extension base="tns:HeaderEntryType">
<xsd:sequence>
<xsd:element name="mustUnderstand" nillable="true" type="xsd:boolean"/>
<xsd:element name="actor" nillable="true" type="xsd:anyURI"/>
<xsd:any/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="SOAP_1_1_BoundHeaderEntryType">
<xsd:complexContent>
<xsd:extension base="tns:HeaderEntryType">
<xsd:sequence>
<xsd:element name="mustUnderstand" nillable="true" type="xsd:boolean"/>
<xsd:element name="actor" nillable="true" type="xsd:anyURI"/>
<xsd:element name="messagePart" type="xsd:string"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="MIMEAttachmentEntryType">
<xsd:complexContent>
<xsd:extension base="tns:AttachmentEntryType">
<xsd:sequence>
<xsd:element name="contentType" type="xsd:string"/>
<xsd:element name="contentTransferEncoding" type="xsd:string"/>
<xsd:element name="contentId" type="xsd:string"/>
<xsd:element name="data" type="xsd:base64Binary"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="BoundMIMEAttachmentEntryType">
<xsd:complexContent>
<xsd:extension base="tns:AttachmentEntryType">
<xsd:sequence>
<xsd:element name="contentType" type="xsd:string"/>
<xsd:element name="contentTransferEncoding" type="xsd:string"/>
<xsd:element name="contentId" type="xsd:string"/>
<xsd:element name="messagePart" type="xsd:string"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="UnknownBodyType">
<xsd:complexContent>
<xsd:extension base="tns:BodyType">
<xsd:sequence>
<xsd:any/>
</xsd:sequence>
<xsd:attribute name="encodingStyle" type="xsd:string"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:schema>