JAX-RPC 애플리케이션에 대한 사용자 정의 바인딩 제공자
사용자 정의 바인딩 제공자는 선언 메타데이터 파일이 포함된 사용자 정의 데이터 바인더 클래스의 패키징입니다. 사용자 정의 바인딩 제공자의 기본 목적은 특정 사용자 시나리오를 지원하기 위해 관련된 사용자 정의 데이터 바인더를 집합하는 것입니다. 사용자 정의 바인딩 제공자는 사용자 정의 데이터 바인더를 이미터 도구 및 런타임 시스템으로 플러그인하는 데 사용되어 이미터 도구가 적절한 아티팩트를 생성하고 런타임 시스템이 기존 유형 맵핑 시스템의 기능을 보강하여 적용된 사용자 정의 데이터 바인더를 반영하고 호출할 수 있게 합니다.
사용자 정의 바인딩 제공자는 특정 XML 스키마 유형에 대해 작업하는 반면 애플리케이션은 몇 가지 관련 XML 스키마 유형을 사용합니다. 완전한 바인딩 솔루션을 제공하기 위해 다양한 사용자 정의 데이터 바인더를 집약하고 선언할 메커니즘이 필요합니다. 사용자 정의 바인딩 제공자의 개념은 사용자 정의 데이터 바인더 세트를 이미터 도구나 런타임 시스템에 플러그인하는 데 사용할 수 있는 선언적 모델을 정의합니다.
사용자 정의 데이터 바인더를 정의하기 위해 WebSphere® Application Server에 포함된 사용자 정의 데이터 바인더 및 CustomBinder API에 대한 추가 정보는 CustomBinder 인터페이스의 정보 및 사용자 정의 데이터 바인더를 참조하십시오. 사용자 정의 데이터 바인더를 정의한 후에는 사용자 정의 바인더 패키지를 배치할 수 있습니다. 이 패키지 배치 방법에 대한 정보는 JAX-RPC 애플리케이션에 대한 사용자 정의 데이터 바인더 배치를 위한 사용 패턴 정보를 참조하십시오.
선언 메타데이터 파일, CustomBindingProvider.xml은 사용자 정의 제공자 클래스와 함께 단일 JAR(Java™ archive) 파일로 패키지되며 /META-INF/services/directory에 있는 XML 파일입니다. 제공자 JAR 파일이 패키지되면 JAR 파일의 2진 정보와 메타데이터 파일은 WSDL2Java 명령행 도구 및 런타임 시스템에서 사용할 수 있습니다.
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema
targetNamespace=
"http://www.ibm.com/webservices/customdatabinding/2004/06"
xmlns:customdatabinding=
"http://www.ibm.com/webservices/customdatabinding/2004/06"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="qualified">
<xsd:element name="provider" type="customdatabinding:providerType"/>
<xsd:complexType name="providerType">
<xsd:sequence>
<xsd:element name="description" type="xsd:string" minOccurs="0"/>
<xsd:element name="mapping" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="description" type="xsd:string" minOccurs="0"/>
<xsd:element name="xmlQName" type="xsd:QName"/>
<xsd:element name="javaName" type="xsd:string"/>
<xsd:element name="qnameScope"
type="customdatabinding:qnameScopeType"/>
<xsd:element name="binder" type="xsd:string"/>
</xsd:sequence>
/xsd:complexType>
</xsd:element>
<xsd:attribute name="scope"
type="customdatabinding:ProviderScopeType" default="module"/>
</xsd:sequence>
</xsd:complexType
<xsd:simpleType name="qnameScopeType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="simpleType"/>
<xsd:enumeration value="complexType"/>
<xsd:enumeration value="element"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ProviderScopeType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="server"/>
<xsd:enumeration value="application"/>
<xsd:enumeration value="module"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
<cdb:provider
xmlns:cdb="http://www.ibm.com/webservices/customdatabinding/2004/06"
xmlns:sdo="commonj.sdo">
<cdb:mapping>
<cdb:xmlQName>sdo:DataGraphType</cdb:xmlQName>
<cdb:javaName>commonj.sdo.DataGraph</cdb:javaName>
<cdb:qnameScope>complexType</cdb:qnameScope>
<cdb:binder>test.sdo.SDODataGraphBinder</cdb:binder>
</cdb:mapping>
</cdb:provider>
배치를 위해 WSDL2Java 명령행으로 사용자 정의 데이터 바인더를 가져와야 합니다. 사용자 정의 데이터 바인더는 서비스 엔드포인트 인터페이스 및 JSR 109 맵핑 데이터를 포함한 개발 아티팩트가 WSDL(Web Services Description Language) 파일에서 생성되는 방식에 영향을 줍니다. WSDL2Java 명령행 도구는 WebSphere Application Server와 함께 제공되며 사용자 정의 바인더 Java 아카이브 파일 또는 사용자 정의 바인더 패키지를 사용하여 개발 아티팩트를 생성합니다.
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="http://sdo.test"
xmlns:impl="http://sdo.test"
xmlns:intf="http://sdo.test"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sdo="commonj.sdo">
<wsdl:types>
<schema elementFormDefault="qualified" targetNamespace="http://sdo.test"
xmlns="http://www.w3.org/2001/XMLSchema" xmlns:sdo="commonj.sdo">
<import namespace="commonj.sdo" schemaLocation="sdo.xsd"/>
</schema>
</wsdl:types>
<wsdl:message name="echoResponse">
<wsdl:part element="sdo:datagraph" name="return"/>
</wsdl:message>
<wsdl:message name="echoRequest">
<wsdl:part element="sdo:datagraph" name="parameter"/>
</wsdl:message>
<wsdl:portType name="EchoService">
<wsdl:operation name="echo">
<wsdl:input message="impl:echoRequest" name="echoRequest"/>
<wsdl:output message="impl:echoResponse" name="echoResponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="EchoServiceSoapBinding" type="impl:EchoService">
<wsdlsoap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="echo">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="echoRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="echoResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="EchoServiceService">
<wsdl:port binding="impl:EchoServiceSoapBinding" name="EchoService">
<wsdlsoap:address location="http://<uri>"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
사용자 정의 데이터 바인딩 패키지 없이
WSDL2Java 명령을 실행하는 경우 다음 서비스 엔드포인트 인터페이스가
JAX-RPC 스펙에 표시된 매개변수 유형으로 생성됩니다.
public interface EchoService extends java.rmi.Remote {
public javax.xml.soap.SOAPElement
echo(javax.xml.soap.SOAPElement parameter)
throws java.rmi.RemoteException;
}
사용자 정의 데이터 바인딩 패키지로 WSDL2Java 명령을 실행할 때에는
매개변수 유형을 생성하는 데 사용자 정의 데이터 바인더가 사용됩니다.
사용자 정의 데이터 바인더를 적용하려면 WSDL2Java 도구에서 -classpath
옵션을 사용하십시오. 도구는 클래스 경로를 검색하여
/META-INF/services/CustomBindingProvider.xml의 파일 경로와 동일한
모든 파일을 찾습니다.
다음은 명령을 사용하여 commonj.sdo.Datagraph 매개변수 유형의
서비스 엔드포인트 인터페이스를 생성하는 방법에 대한 예제입니다. WSDL2Java -role develop-server -container web classpath sdobinder.jar echo.wsdl
생성되는 서비스 엔드포인트 인터페이스는 다음과 유사합니다. public interface EchoService extends java.rmi.Remote {
public commonj.sdo.DataGraph
echo(commonj.sdo.DataGraph parameter)
throws java.rmi.RemoteException;
}
사용자 정의 바인더 패키지된 JAR 파일은
런타임에서 사용 가능하게 되어 웹 서비스 클라이언트가 스텁 기반의 클라이언트 또는 DII(Dynamic Invocation Interface)
클라이언트인지에 상관없이 호출되도록 합니다. 서비스에 동일하게 적용됩니다.