JAX-RPC 애플리케이션에 대한 사용자 정의 데이터 바인더

사용자 정의 데이터 바인더는 XML 스키마 유형을 Java™ 오브젝트로 맵핑하는 데 사용됩니다. 사용자 정의 데이터 바인더는 현재 JAX-RPC(Java API for XML-based Remote Call Procedure) 스펙에서 지원하지 않는 XML 스키마 유형에 대한 바인딩을 제공합니다.

사용자 정의 데이터 바인더는 Java 오브젝트 및 SOAPElement 인터페이스 사이를 변환하는 직렬화 및 직렬화 해제 메소드를 정의합니다. 사용자 정의 데이터 바인더는 런타임 시스템에 추가되고 SOAPElement를 사용하여 웹 서비스 런타임과 상호작용합니다. 일반적인 직렬화 해제 변환기와 다르게, 사용자 정의 데이터 바인더는 SAX(Simple API for XML)와 같은 Java 오브젝트를 빌드하기 위해 런타임의 하위 레벨 구문 분석 이벤트에 의존하지 않습니다. 대신 런타임이 수신 SOAP 메시지를 SOAPElement로 렌더링해서 사용자 정의 데이터 바인더를 빌드합니다. 메시지를 포함하는 SOAPElement는 사용자 정의 데이터 바인더로 전달됩니다. 예를 들어, 수신 메시지가 서비스 데이터 오브젝트(SDO) DataGraph를 포함하는 경우 런타임 시스템이 다음과 같이 처리합니다.
  1. 런타임 시스템은 <sdo:Datagraph> 코드를 인식합니다.
  2. 런타임이 유형 맵핑 시스템을 조회하여 DataGraph 데이터에 대한 사용자 정의 데이터 바인더(예: SDOCustomBinder)를 찾습니다.
  3. 수신 SDO DataGraph를 나타내는 SOAPElement가 작성됩니다.
  4. 런타임이 SOAPElement를 SDOCustomBinder에 전달합니다.
직렬화 해제된 메소드 내에서 SDOCustomBinder는 SOAPElement로부터 컨텐츠를 추출하고 commonj.sdo.DataGraph 유형의 구체적 DataGraph 오브젝트를 빌드합니다.

 사용자 정의
데이터 바인더를 사용하는 웹 서비스 런타임 플로우

Java 오브젝트가 직렬화될 때에도 유사한 프로세스가 발생합니다. 런타임이 사용자 정의 데이터 바인더를 찾고 Java 오브젝트를 SOAPElement로 변환합니다. 런타임이 SOAPElement를 출력 스트림에서 전송되는 원시 메시지로 직렬화합니다.

다음은 SDO 스펙에서 정의된 XML 스키마의 예제입니다.
<xsd:schema
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:sdo="commonj.sdo"
  targetNamespace="commonj.sdo">

  <xsd:element name="datagraph" type="sdo:DataGraphType"/>
  
  <xsd:complexType name="DataGraphType">
  <xsd:complexContent>
    <xsd:extension base="sdo:BaseDataGraphType">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="1" 
                 namespace="##other" processContents="lax"/>
      </xsd:sequence>
    </xsd:extension>
  </xsd:complexContent>
  </xsd:complexType>

  <xsd:complexType name="BaseDataGraphType" abstract="true">
  <xsd:sequence>
    <xsd:element name="models" type="sdo:ModelsType" minOccurs="0"/>
    <xsd:element name="xsd" type="sdo:XSDType" minOccurs="0"/>
    <xsd:element name="changeSummary"
                 type="sdo:ChangeSummaryType" minOccurs="0"/>
   </xsd:sequence>
  <xsd:anyAttribute namespace="##other" processContents="lax"/>
  </xsd:complexType>
    
  <xsd:complexType name="ModelsType">
  <xsd:sequence>
    <xsd:any minOccurs="0" maxOccurs="unbounded" 
             namespace="##other" processContents="lax"/>
  </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="XSDType">
  <xsd:sequence>
    <xsd:any minOccurs="0" maxOccurs="unbounded" 
        namespace="http://www.w3.org/2001/XMLSchema" processContents="lax"/>
  </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="ChangeSummaryType">
  <xsd:sequence>
    <xsd:any minOccurs="0" maxOccurs="unbounded" 
             namespace="##any" processContents="lax"/>
  </xsd:sequence>
  <xsd:attribute name="create" type="xsd:string"/>
  <xsd:attribute name="delete" type="xsd:string"/>
  </xsd:complexType>

</xsd:schema>

WebSphere® Application Server는 특정 XML 스키마 유형에 대한 구체적 사용자 정의 바인딩을 구현하는 CustomBinder 인터페이스를 정의합니다.

사용자 정의 바인딩 제공자는 사용자 정의 바인딩을 런타임으로 가져오는 데 사용됩니다. 개발 목적으로 사용자 정의 데이터 바인더를 WSDL2Java 명령행 도구에 플러그인하는 방법을 배우려면 사용자 정의 바인딩 제공자에 대해 읽으십시오. 사용자 정의 데이터 바인더 배치에 대한 사용법 패턴에서 제공자 패키지를 런타임에 배치하는 방법 및 사용자 정의 바인딩 프로세스와 관련된 역할에 대해 자세히 학습할 수도 있습니다.


주제 유형을 표시하는 아이콘 개념 주제



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