用于 JAX-RPC 应用程序的定制绑定提供程序

定制绑定提供程序是将定制数据绑定程序类和声明式元数据文件打包的结果。定制绑定提供程序的主要用途是聚集相关定制数据绑定程序以支持特殊的用户方案。定制绑定提供程序用来将定制数据绑定程序插入发射器工具和运行时系统,以便发射器工具可以生成适当的工件,而运行时系统可以增大它的现有类型映射系统,以反映已应用的定制数据绑定程序并调用它们。

定制绑定提供程序使用特定 XML 模式类型,而应用程序涉及到很少的相关 XML 模式类型。您需要一种机制来聚集和声明各种定制数据绑定程序,以提供完整的绑定解决方案。定制绑定提供程序这一概念定义一个声明式模型,可以使用该模型来将一组定制数据绑定程序插入发射器工具或运行时系统。

请参阅定制数据绑定程序信息和有关 CustomBinder 接口的信息,以更多地了解定制数据绑定程序和 WebSphere® Application Server 中用来定义定制数据绑定程序的 CustomBinder API。在定义定制数据绑定程序后,就可以部署定制绑定程序包了。要了解如何部署此包,请参阅有关用于为 JAX-RPC 应用程序部署定制数据绑定程序的使用模式的信息。

声明式元数据文件 CustomBindingProvider.xml 是一个 XML 文件,它与定制提供程序类打包在单个 Java™ 归档 (JAR) 文件中并位于 /META-INF/services/directory 目录。一旦将提供程序 JAR 文件打包,命令行工具 WSDL2Java 和运行时系统就可以使用位于该 JAR 文件中的二进制信息和元数据文件。

以下示例是 CustomBindingProvider.xml 文件的 XML 模式。顶级类型是 providerType,它包含一个映射元素列表。每个映射元素都会定义相关联的数据绑定程序和属性(包括 xmlQName、javaName 和 qnameScope)。请参阅 JAX-RPC 应用程序的 CustomBinder 接口的信息,可以更多地了解这些属性。providerType 还有一种称为 scope 的属性,该属性的值为 serverapplicationmodule。服务器在部署时使用 scope 属性来解决冲突和实现定制绑定层次结构。
<?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>
以下是 CustomBinder 接口中引入的 SDO 数据图模式的 CustomBindingProvider.xml 文件示例。该示例显示了模式类型 DataGraphType 与 Java 类型 commonj.sdo.DataGraph 之间的映射。表示此映射的绑定程序称为 test.sdo.SDODataGraphBinder
<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 用于进行开发。定制数据绑定程序会影响如何从 Web 服务描述语言 (WSDL) 文件中生成开发工件(包括“服务端点接口”和 JSR 109 映射数据)。命令行工具 WSDL2Java 是随 WebSphere Application Server 一起提供的,它使用定制绑定程序 Java 归档文件或定制绑定程序包来生成这些开发工件。

以下示例是一个引用 SDO 数据图模式的 WSDL 文件,“CustomBinder 接口”主题中介绍了该模式。
<?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 文件在运行时必须可用,以确保调用 Web Service 客户机(不管它是一个基于存根的客户机还是一个“动态调用接口”(DII) 客户机)。对于服务也是如此。

指示主题类型的图标 概念主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cwbs_custombinderprovider
文件名:cwbs_custombinderprovider.html