Provedores de Ligação Customizada para Aplicativos JAX-RPC

Um provedor de ligação customizada é o pacote de classes do ligador de dados customizados com um arquivo de metadados declarativos. A principal finalidade de um provedor de ligação customizada é agregar ligadores de dados customizados relacionados para suportar cenários de um usuário específico. O provedor de ligação customizada é utilizado para conectar os ligadores de dados customizados às ferramentas do emissor e ao sistema de tempo de execução para que as ferramentas do emissor possam gerar artefatos apropriados e o sistema de tempo de execução possa aumentar seu sistema de mapeamento de tipos existentes para refletir os ligadores de dados customizados aplicados e chamá-los.

Um provedor de ligação customizada funciona com um tipo de esquema XML específico, enquanto os aplicativos envolvem alguns tipos de esquemas XML relacionados. Você precisa de um mecanismo para agregar e declarar vários binders de dados customizados para fornecer uma solução de ligação completa. O conceito do provedor de ligação customizada define um modelo declarativo que pode ser utilizado para conectar um conjunto de binders de dados customizados a ferramentas do emissor ou ao sistema de tempo de execução.

Consulte as informações sobre os binders de dados customizados e as informações sobre a interface CustomBinder para saber mais sobre binders de dados customizados e a API CustomBinder incluída no WebSphere Application Server para definir os binders de dados customizados. Depois de revisar os binders de dados customizados, você está pronto para implementar o pacote de binder customizado. Para saber como implementar esse pacote, consulte as informações sobre o uso de padrões para implementar binders de dados customizados para aplicativos JAX-RPC.

O arquivo de metadados declarativos, CustomBindingProvider.xml,é um arquivo XML empacotado com as classes de provedor customizado em um único JAR (Java™ archive) e localizado em /META-INF/services/directory. Uma vez que o arquivo JAR do provedor é empacotado, as informações binárias e o arquivo de metadados localizado no arquivo JAR podem ser usados pela ferramenta de linha de comandos WSDL2Java e o sistema de tempo de execução.

O exemplo a seguir é o esquema XML para o arquivo CustomBindingProvider.xml. O tipo de nível superior é o providerType que contém uma lista de elementos de mapeamento. Cada elemento de mapeamento define o binder de dados customizados associados e as propriedades, incluindo xmlQName, javaName e qnameScope. É possível ler mais sobre essas propriedades nas informações para a interface CustomBinder para aplicativos JAX-RPC. O providerType também possui um atributo chamado scope que possui um valor de server, application ou module. O atributo scope é utilizado pela implementação do servidor para resolver o conflito e para realizar uma hierarquia de ligação customizada.
<?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>
A seguir, um exemplo do arquivo CustomBindingProvider.xml para o esquema SDO DataGraph que foi introduzido em Interface CustomBinder. O exemplo exibe o mapeamento entre um tipo de esquema, DataGraphType, e um tipo Java , commonj.sdo.DataGraph. O binder que representa esse mapeamento é chamado 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>

Você precisa importar seus ligadores de dados customizados para a ferramenta de linha de comandos WSDL2Java para fins de desenvolvimento. Os binders de dados customizados afetam como os artefatos de desenvolvimento, incluindo a Interface de Terminal em Serviço e os dados de mapeamento JSR 109, são gerados no arquivo WSDL (Web Services Description Language). A ferramenta de linha de comandos WSDL2Java acompanha o WebSphere Application Server e utiliza um arquivo de Java do binder customizado ou pacote de binder customizado, para gerar esses artefatos de desenvolvimento.

O exemplo a seguir é um arquivo WSDL que faz referência ao esquema SDO DataGraph introduzido no tópico Interface 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>
Se você executar o comando WSDL2Java sem o pacote de ligação de dados customizados, a seguinte Interface de Terminal em Serviço é gerada com um tipo de parâmetro, conforme determinado pela especificação JAX-RPC:
public interface EchoService extends java.rmi.Remote {
		public javax.xml.soap.SOAPElement
			echo(javax.xml.soap.SOAPElement parameter)
				throws java.rmi.RemoteException;
}
Quando você executa o comando WSDL2Java com o pacote de ligação de dados customizados, os binders de dados customizados são utilizados para gerar os tipos de parâmetros. Para aplicar os binders de dados customizados, utilize a opção -classpath na ferramenta WSDL2Java. A ferramenta procura seu caminho de classe para localizar todos os arquivos com o mesmo caminho de arquivo de /META-INF/services/CustomBindingProvider.xml. O exemplo a seguir mostra como o comando pode ser utilizado para gerar uma Interface de Terminal em Serviço com o tipo de parâmetro de commonj.sdo.Datagraph:
WSDL2Java -role develop-server -container web classpath sdobinder.jar echo.wsdl
A Interface de Terminal em Serviço gerada é semelhante à seguinte:
public interface EchoService extends java.rmi.Remote {
		public commonj.sdo.DataGraph
			echo(commonj.sdo.DataGraph parameter)
				throws java.rmi.RemoteException;
}
O arquivo JAR compactado do componente de ligação customizado deve ser disponibilizado no tempo de execução para ter certeza de que o cliente de serviço da Web foi chamado, independentemente se for um cliente baseado em stub ou um cliente Dynamic Invocation Interface (DII). O mesmo se aplica ao serviço.

Ícone que indica o tipo de tópico Tópico de Conceito



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cwbs_custombinderprovider
Nome do arquivo: cwbs_custombinderprovider.html