JAX-RPC 애플리케이션을 위한 CustomBinder 인터페이스

WebSphere® Application Server는 특정 XML 스키마 유형에 대한 구체적인 사용자 정의 데이터 바인더를 제공하기 위해 JAX-RPC(Java™ API for XML-based Remote Call Procedure) 애플리케이션에 대해 구현할 수 있는 CustomBinder 인터페이스를 정의합니다.

CustomBinder 인터페이스는 deserialize 및 serialize 메소드 이외에도 3개의 특성을 포함합니다. 이들 특성은 XML 스키마 유형에 대한 QName, QName 범위 및 스키마 유형이 맵핑하는 Java 유형입니다. 이러한 특성은 해당 getter 메소드를 통해 액세스할 수 있습니다.

getQName

getQName 메소드는 대상 XML 스키마 유형의 QName을 리턴합니다. 사용자 정의 데이터 바인더는 루트 레벨 스키마 유형에서만 작동합니다.

익명 유형인 경우 getQName 메소드는 포함하는 요소의 QName을 리턴합니다.

이름 지정된 유형의 경우 getQName 메소드는 complexType 또는 simpleType의 QName을 리턴합니다.

getQNameScope

getQNameScope 메소드는 스키마 유형이 이름 지정된 유형인지 또는 익명 유형인지를 표시하는 바인더 qnameScope 특성을 리턴합니다. qnameScope 특성 값은 complexType(<xsd:complexType>의 경우), simpleType(<xsd:simpleType>의 경우) 또는 element(익명 유형으로 정의된 <xsd:element>의 경우)일 수 있습니다.

다음 스키마에서 data1은 익명 유형으로 정의된 요소입니다. data2 요소는 이름 지정된 유형인 data2Type를 사용하여 정의됩니다.
<xsd:element name="data1">
	<xsd:complexType>
		...
	</xsd:complexType>
</xsd:element>

<xsd:element name= "data2" type="data2Type"/>
<xsd:complexType name="data2Type">
	...
</xsd:complexType>
data1 익명 유형에서 qNameScope는 element이고 qName은 data1입니다. data2Type 유형에서 qNameScope는 complexType이고 qName은 data2Type입니다.

data2 요소는 사용자 정의 데이터 바인더에서 표시되지 않습니다. 사용자 정의 데이터 바인더는 요소가 아닌 유형만 처리합니다.

getJavaName

getJavaName 메소드는 이름 지정된 유형 또는 익명 유형에 맵핑되는 Java 유형의 완전한 클래스 이름을 리턴합니다. 클래스는 인터페이스 또는 구체적 클래스일 수 있습니다. deserialize 메소드에서 리턴된 오브젝트의 유형은 getJavaName 메소드에서 리턴한 Java 유형과 호환 가능합니다.

직렬화

serialize 메소드는 사용자 정의 데이터 바인더가 Java 오브젝트에서 빌드하는 SOAPElement를 리턴합니다. Java 오브젝트는 런타임 시스템에서 전달되며 getJavaName 메소드에서 리턴하는 항목과 일치할 것으로 예상됩니다. SOAPElement 매개변수에는 하위 요소가 없지만 유효한 QName 을 갖습니다. 이 매개변수는 바인더가 최종 SOAPElement를 작성하기 위한 참조입니다.

대부분의 경우 바인더 구현 시 하위 요소를 루트 SOAPElement에 추가합니다. 런타임 시스템은 올바른 SOAPElement QName을 사용하도록 보장합니다. 따라서 이름 지정된 유형의 사용자 정의 데이터 바인더에서는 바인더가 엔클로징 요소를 모르기 때문에 루트 요소의 QName을 보관합니다. 익명 유형을 사용하는 바인더 구현에서는 항상 정의된 스키마 유형과 일치하는 리턴된 SOAPElement에 QName을 포함해야 합니다. WebSphere Application Server는 CustomBindingContext 매개변수에 구체적 메소드를 갖지 않습니다.

역직렬화

deserialize 메소드는 사용자 정의 데이터 바인더가 전달된 루트 SOAPElement에서 빌드하는 Java 오브젝트를 리턴합니다. 리턴된 Java 오브젝트의 오브젝트 유형은 getJavaName 메소드에서 리턴하는 유형과 일치해야 합니다. 매개변수 serialize 메소드와는 달리, 전달된 SOAPElement에는 원래 XML 데이터와 함께 필수 네임스페이스 선언이 들어 있습니다.

다음은 SDO DataGraph 바인더 구현에 대한 예제입니다. 여기서 convertToSDO 및 convertToSAAJ 유틸리티 메소드는 SOAPElement 및 SDO 오브젝트 사이에서 변환을 수행합니다.

package test.sdo.binder;

import javax.xml.namespace.QName;
import javax.xml.soap.SOAPElement;

import com.ibm.wsspi.webservices.binding.CustomBinder;
import com.ibm.wsspi.webservices.binding.CustomBindingContext;

public class DataGraphBinder implements CustomBinder {
	public QName getQName() {
		return new QName("commonj.sdo", "DataGraphyType");
}
public String getJavaName() {
	return CustomBinder.QNAME_SCOPE_COMPLEXTYPE;
}
public String getJavaName() {
	return commonj.sdo.DataGraph.class.getName();
}
public javax.xml.soap.SOAPElement serialize(
		Object bean,
		SOAPElement rootNode,
		CustomBindingContext context)
		throws javax,xml.soap.SOAPException {
	// convertToSAAJ is a utility method to convert
	// the SDO DataGraph to the SOAPElement
	return convertToSAAJ(bean, rootNode);

public Object deserialize(
		SOAPElement source,
		CustomBindingContext context)
		throws javax.xml.soap.SOAPException {
		// convertToSDO is a utility method to convert
		// the SOAPElement to the SDO DataGraph
		return convertToSDO(source);
	}
}

사용자 정의 데이터 바인더에 대해 자세히 알려면 JAX-RPC 애플리케이션에 대한 사용자 정의 데이터 바인더 정보를 참조하십시오. 개발을 위해 사용자 정의 데이터 바인더를 WSDL2Java 명령행 도구에 플러그인하는 방법을 알려면 JAX-RPC 애플리케이션에 대한 사용자 정의 데이터 바인딩 제공자 정보를 참조하십시오.


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



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