XML 스키마 정의를 SDO 유형 시스템에 맵핑

각 XML 스키마 유형은 SDO 유형에 맵핑됩니다. 이 맵핑을 사용하여 프로그램이 중개하는 메시지의 데이터 그래프를 탐색하는 코드를 개발하는 데 도움이 됩니다.

중개에서 지원되는 SDO(Service Data Objects)의 버전은 버전 1입니다.

XML 스키마는 메시지 파트를 설명하는 WSDL 섹션과 SOAP 헤더에서 임베디드될 수 있습니다. 그러나 SOAP 헤더 설명은 별도의 스키마로 사용 가능할 수 있으며, 이 경우 런타임 시 일치되는 헤더가 있는 메시지를 처리하는 데 사용될 수 있는 SDO 저장소로 로드해야 합니다.

Java 클래스 맵핑에 대한 스키마

각 XML 스키마 복합 유형은 SDO 유형에 맵핑됩니다. 복합 유형인 요소가 SDO 데이터 오브젝트의 인스턴스로 표시됨을 의미합니다. 이 유형에는 스키마 유형 정의에 포함된 각 요소, 속성 또는 와일드카드에 대한 특성이 있습니다.

인스턴스는 설정되었던 각 특성에 대한 값을 포함합니다. 특성이 스키마 복합 유형으로 맵핑되면 값은 다른 SDO 데이터 오브젝트입니다. 특성이 스키마 단순 유형으로 맵핑되면 값은 다음 테이블에서 표시된 대로 Java™ 클래스의 인스턴스입니다.

표 1. 스키마 유형 및 해당 Java 클래스. 테이블의 첫 번째 열은 스키마 유형을 나열합니다. 두 번째 열은 해당 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 참조
참고:
  1. SDO는 자동으로 기본 요소(int, long 등)를 필요에 따라 오브젝트로 변환합니다. 일반 get 및 set 메소드뿐만 아니라 특별한 메소드의 혼합(getInt, setInt, getLong, setLong)을 사용할 수 있음을 의미합니다.
  2. 바이트 배열이 변경되기 쉽기 때문에 이를 데이터 오브젝트에서 다시 설정하지 않고 값을 업데이트할 수 있습니다. 그러나 업데이트가 되면 데이터 오브젝트는 내재적 업데이트를 알지 못할 수 있습니다. 바이트 배열 값으로 작업할 때, 항상 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>
      

주제 유형을 표시하는 아이콘 참조 주제



시간소인 아이콘 마지막 업데이트 날짜: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rjy1113
파일 이름:rjy1113.html