Mapeando Entre Linguagem Java,WSDL e XML para Aplicativos JAX-RPC

Os dados para aplicativos JAX-RPC (Java™ API for XML-based Remote Procedure Call) fluem como XML (Linguagem de Marcação Extensível). Os aplicativos JAX-RPC utilizam os mapeamentos para descrever a conversão de dados entre as tecnologias de linguagem Java e XML (Linguagem de Marcação Extensível), inclusive Esquema XML, WSDL (Web Services Description Language) e SOAP suportados pelo servidor de aplicativos.

Para aplicativos JAX-RPC, a maioria dos mapeamentos entre a linguagem Java e XML é especificada pela especificação JAX-RPC. Alguns mapeamentos opcionais ou não especificados em JAX-RPC também são suportados. Revise a especificação JAX-RPC para obter uma lista completa de APIs. Para obter uma lista completa de padrões e especificações suportados, consulte as especificações de serviços da Web e a documentação da API.

Convenções de Notações

Tabela 1. Convenções de Espaço de Nomes. Descreve os prefixos de espaço de nomes e o espaço de nomes correspondente usado nas convenções de espaço de nomes.
Prefixo de Namespace Namespace
xsd http://www.w3.org/2001/XMLSchema
xsi http://www.w3.org/2001/XMLSchema-instance
soapenc http://schemas.xmlsoap.org/soap/encoding/
wsdl http://schemas.xmlsoap.org/wsdl/
wsdlsoap http://schemas.xmlsoap.org/wsdl/soap/
ns espaço de nomes definido pelo usuário
apache http://xml.apache.org/xml-soap
wasws http://websphere.ibm.com/webservices/

Informações Detalhadas de Mapeamento

As seções a seguir identificam os mapeamentos suportados, incluindo:

Mapeamento de Java para WSDL

Esta seção resume as regras de mapeamento de Java para WSDL. As regras de mapeamento Java para WSDL são utilizadas pelo comando Java2WSDL para Processamento de baixo para cima. No processamento ascendente, uma implementação de serviçoJava existente é usada para criar um arquivo WSDL que define o serviço da Web. O arquivo WSDL gerado pode requerer edição manual adicional pelas seguintes razões:
  • Nem todas as classes e estruturas Java têm mapeamentos para arquivos WSDL. Por exemplo, as classes Java que não estiverem de acordo com as regras de especificação do bean Java não podem mapear para uma estrutura de WSDL.
  • Algumas das classes e estruturas Java têm vários mapeamentos para um arquivo WSDL. Por exemplo, uma classe java.lang.String pode mapear tanto para uma construção xsd:string quanto para uma construção soapenc:string. O comando Java2WSDL escolhe um desses mapeamentos, mas você edita o arquivo WSDL se um mapeamento diferente for requerido.
  • Existem várias formas de gerar construções WSDL. Por exemplo, você pode gerar wsdl:part em wsdl:message com um atributo de tipo ou elemento. O comando Java2WSDL faz uma opção informada com base nas definições de opção -style e -use.
  • O arquivo WSDL descreve os elementos de dados da instância enviados na mensagem SOAP. Se deseja modificar os nomes ou o formato utilizado na mensagem, o arquivo WSDL deverá ser editado. Por exemplo, o comando Java2WSDL mapeia uma propriedade de bean Java como um elemento XML. Em algumas circunstâncias, talvez você queira alterar o arquivo WSDL para mapear a propriedade de bean Java como um atributo XML.
  • O arquivo WSDL requer edição se o suporte de cabeçalho ou de anexo for desejado.
  • O arquivo WSDL requer edição se um arquivo WSDL com várias partes, utilizando a construção wsdl:import, for desejado.
Para serviços simples, o arquivo WSDL gerado é suficiente. Para serviços complicados, o arquivo WSDL gerado é um bom ponto de partida. Leia sobre a ferramenta de linha de comandos Java2WSDL para aplicativos JAX-RPC (Java API for XML-based Remote Procedure Call) para saber mais sobre essa ferramenta.
Questões Gerais
  • Pacote para mapeamento de namespace:

    A especificação JAX-RPC não indica o mapeamento padrão dos nomes de pacote Java para espaços de nomes XML. A especificação JAX-RPC não especifica que cada pacote Java deve mapear para um único espaço de nomes XML. Do mesmo modo, cada espaço de nomes XML deve mapear para um único pacote Java. É fornecido um algoritmo de mapeamento padrão que constrói o espaço de nomes invertendo os nomes do pacote Java e incluindo um prefixo http://. Por exemplo, um pacote denominado com.ibm.webservice é mapeado para o espaço de nomes XML http://webservice.ibm.com.

    É possível substituir o mapeamento padrão entre os espaços de nomes XML e os nomes de pacote Java utilizando as opções -NStoPkg e -PkgtoNS dos comandos WSDL2Java e Java2WSDL.

  • Mapeamento de identificador :

    Os identificadores Java são mapeados diretamente para os identificadores WSDL e XML.

    Os nomes de propriedade de bean Java são mapeados para os identificadores XML. Por exemplo, um bean Java , com os métodos getInfo e setInfo, mapeia para uma estrutura XML com o nome info.

    Os nomes de parâmetros de método da interface de nó de extremidade de serviço, se disponíveis, são mapeados diretamente para os identificadores WSDL e XML. Consulte as informações para a opção -implClass do comando WSDL2Java para obter mais informações.

  • Resumo de construção de WSDL:
    Tabela 2. Mapeando de Java para WSDL ou uma Construção XML. Descreve o mapeamento de uma construção Java para a construção WSDL e XML relacionada.
    Construção Java Construção de WSDL e XML
    Interface de nó de extremidade de serviço wsdl:portType
    Método wsdl:operation
    Parameters wsdl:input, wsdl:message, wsdl:part
    Return wsdl:output, wsdl:message, wsdl:part
    Emite wsdl:fault, wsdl:message, wsdl:part
    Tipos primitivos tipos simples xsd e soapenc
    Beans Java xsd:complexType
    Propriedades de bean Java xsd:elements aninhados de xsd:complexType
    Matrizes xsd:complexType ou xsd:element definido por JAX-RPC com um atributo maxOccurs="unbounded"
    Exceções definidas pelo usuário xsd:complexType
  • Construções binding e service

    Uma wsdl:binding em conformidade com o wsdl:portType gerado é gerado. Um wsdl:service contendo uma porta que faz referência à wsdl:binding gerada é gerado. Os nomes das construções binding e service são controlados pelo comando Java2WSDL.

  • Style e use
    Utilize as opções -style e -use para gerar diferentes tipos de arquivos WSDL. As quatro combinações suportadas são:
    • -style DOCUMENT -use LITERAL
    • -style RPC -use LITERAL
    • -style DOCUMENT -use LITERAL -wrapped false
    • -style RPC -use ENCODED
    A seguir é apresentada uma breve descrição de cada combinação.
    • DOCUMENT LITERAL:

      O comando Java2WSDL gera um arquivo WSDL document-literal em conformidade com a especificação Web Services - Interoperability (WS-I). A wsdl:binding é gerada com os atributos style="document" e use="literal" incorporados. Um xsd:element é gerado para cada método de interface de nó de extremidade de serviço para descrever a mensagem de pedido. Um xsd:element semelhante é gerado para cada método de interface de nó de extremidade de serviço para descrever a mensagem de resposta.

    • RPC LITERAL:

      O comando Java2WSDL gera um arquivo WSDL rpc-literal em conformidade com WS-I. A wsdl:binding é gerada com os atributos style="rpc" e use="literal" incorporados. As construções wsdl:message são geradas para as entradas e saídas de cada método de interface de nó de extremidade de serviço. Os parâmetros do método são descritos pelos elementos de parte nas construções wsdl:message.

    • DOCUMENT LITERAL não quebrado:

      O comando Java2WSDL gera um arquivo WSDL document-literal de acordo com a especificação JAX-RPC. Esse arquivo WSDL não está em conformidade com .NET. A principal diferença entre DOCUMENT LITERAL e DOCUMENT LITERAL não agrupado é o uso das construções wsdl:message para definir as mensagens de pedido e de resposta.

    • RPC ENCODED:

      O comando Java2WSDL gera um arquivo WSDL rpc-encoded de acordo com a especificação JAX-RPC. Esse arquivo WSDL não está em conformidade com a especificação WS-I. A wsdl:binding é gerada com os atributos style="rpc" e use="encoded" incorporados. Determinados mapeamentos soapenc são utilizados para representar tipos e matrizes.

    Muitos tipos Java podem mapear diretamente para os tipos XML padrão. Por exemplo, um java.lang.String mapeia para um xsd:string. Esses mapeamentos são descritos na especificação JAX-RPC.

    Os tipos Java que não podem ser mapeados diretamente para os tipos XML padrão são gerados na seção wsdl:types. Uma classe Java correspondente ao padrão de bean Java é mapeada para um xsd:complexType. Reveja a especificação JAX-RPC para obter uma descrição de todas as regras de mapeamento. O exemplo a seguir ilustra o mapeamento para uma base de amostra e classes Java derivadas.
    Java:
    
    
    public abstract class Base {  
         public Base() {}  
         public int a;                         // mapeado  
         private int b;                        // mapeaddo por meio de setter/getter  
         private int c;                        // não mapeado  
         private int[] d;                      // mapeado por meio de setter/getter indexados  
    
         public int getB() { return b;}        // propriedade de mapa b  
         public void setB(int b) {this.b = b;}  
    
         public int[] getD() { return d;}      // propriedade indexada de mapa d  
         public void setD(int[] d) {this.d = d;}  
         public int getD(int index) { return d[index];}  
         public void setB(int index, int value) {this.d[index] = value;}  
    
         public void someMethod() {...}        // não mapeado  
      }  
    
      public class Derived extends Base {  
         public int x;                         // mapeado  
         private int y;                        // não mapeado  
      } 
    
    Mapeado para: 
    
    <xsd:complexType name="Base" abstract="true">  
    	<xsd:sequence>
    		<xsd:element name="a" type="xsd:int"/> 
    		<xsd:element name="b" type="xsd:int"/> 
    		<xsd:element name="d" minOccurs="0" maxOccurs="unbounded" type="xsd:int"/>
    	</xsd:sequence>
    </xsd:complexType>
    
    <xsd:complexType name="Derived">  
    	<xsd:complexContent>
    		<xsd:extension base="ns:Base"> 
    			<xsd:sequence>  
    				<xsd:element name="x" type="xsd:int"/>
    			</xsd:sequence>
    		</xsd:extension>
    	</xsd:complexContent>
    </xsd:complexType>
        
    
  • Classes não suportadas:

    Se uma classe não puder ser mapeada para um tipo XML, o comando Java2WSDL emitirá uma mensagem e uma referência xsd:anyType será gerada no arquivo WSDL. Nessas situações, modifique a implementação de serviço da Web para usar as classes compatíveis com JAX-RPC.

Mapeamento de WSDL para Java

O comando WSDL2Java gera classes Java utilizando informações descritas no arquivo WSDL.

Problemas gerais:
  • Mapeamento de um namespace para um pacote:

    O JAX-RPC não especifica o mapeamento de espaços de nomes XML para os nomes do pacote Java. O JAX-RPC não especifica que cada pacote Java mapeia para um único espaço de nomes XML. Do mesmo modo, cada espaço de nomes XML deve mapear para um único pacote Java. Um algoritmo de mapeamento padrão omite qualquer protocolo do espaço de nomes XML e reverte os nomes. Por exemplo, um espaço de nomes http://websphere.ibm.com se torna um pacote Java com o nome com.ibm.websphere.

    O mapeamento padrão de um espaço de nomes XML para um pacote Java desconsidera a raiz de contexto. Se dois espaços de nomes forem iguais até a primeira barra, eles mapearão para o mesmo pacoteJava. Por exemplo, os espaços de nomes XML http://websphere.ibm.com/foo e http://websphere.ibm.com/bar mapeiam para o pacote com.ibm.websphere Java. É possível substituir o mapeamento padrão entre os espaços de nomes XML e os nomes de pacote Java utilizando as opções -NStoPkg e -PkgtoNS dos comandos WSDL2Java e Java2WSDL.

    Os nomes XML são muito mais complexos do que os identificadores Java. Eles podem incluir caracteres não permitidos nos identificadores Java. Consulte o Apêndice 20 da especificação JAX-RPC para obter as regras para mapear um nome XML para um identificadorJava.

  • Resumo de construção de Java:
    A tabela a seguir resume as construções XML para Java. Consulte a especificação JAX-RPC para obter uma descrição desses mapeamentos.
    Tabela 3. Mapeando de uma construção WSDL ou XML para Java. Descreve o mapeamento entre as construções para XML e Java.
    Construção de WSDL e XML Construção Java
    xsd:complexType Classe de bean Java, classe de exceção Java ou matrizJava
    xsd:element/xsd:attribute aninhado Propriedade de bean Java
    xsd:simpleType (enumeração) Classe de enumeração JAX-RPC
    wsdl:message A assinatura do parâmetro do método é geralmente determinada pelo wsdl:message. Assinatura de método de interface de nó de extremidade de serviço
    wsdl:portType Interface de nó de extremidade de serviço
    wsdl:operation Método de interface de nó de extremidade de serviço
    wsdl:binding Stub
    wsdl:service Interface de serviço
    wsdl:port Método acessador da porta na interface de serviço
  • Tipos de XML padrão de mapeamento:
    • Mapeamento de tipos de XML simples de JAX-RPC:

      Muitos tipos XML são mapeados diretamente para tipos Java. Consulte a especificação JAX-RPC para obter uma descrição desses mapeamentos.

      O comando WSDL2Java gera os tipos Java para as estruturas de esquema XML definidas na seção wsdl:types. A linguagem do esquema XML é mais ampla do que o subconjunto obrigatório ou opcional definido na especificação JAX-RPC. O comando WSDL2Java suporta os mapeamentos requeridos e a maioria dos mapeamentos opcionais, bem como alguns mapeamentos de esquema XML que não estão incluídos na especificação JAX-RPC. O comando WSDL2Java ignora algumas construções que ele não suporta. Por exemplo, o comando não suporta o atributo padrão. Se um xsd:element for definido com o atributo default, o atributo default será ignorado. Em alguns casos, o comando mapeia as estruturas não suportadas para a interface Java, javax.xml.soap.SOAPElement.

      O mapeamento de bean Java padrão é definido na seção 4.2.3 da especificação JAX-RPC. O xsd:complexType define o tipo. O xsd:elements dentro dos grupos xsd:sequence ou xsd:all são mapeados para as propriedades do bean Java. Por exemplo:
      XML:
      
       
      <xsd:complexType name="Sample">
      	 <xsd:sequence>
      		<xsd:element name="a" type="xsd:string"/>
      		<xsd:element name="b" maxOccurs="unbounded" type="xsd:string"/> 
      	</xsd:sequence>
      </xsd:complexType>
      
      Java:    
        
      public class Sample {  
           // ..  
           public Sample() {}  
      
           // Propriedade Bean a  
           public String getA()             {...}  
           public void   setA(String value) {...}  
      
           // Propriedade Bean b Indexada  
           public String[] getB()           {...}  
           public String   getB(int index)  {...}  
           public void     setB(String[] values) {...}  
           public void     setB(int index, String value) {...}  
      
        }
      
    • Construção de wsdl:portType de mapeamento:

      A construção wsdl:portType é mapeada para a interface de nó de extremidade de serviço. O nome da construção wsdl:portType é mapeado para o nome da classe da interface de nó de extremidade de serviço.

    • Mapeamento de construção de wsdl:operation:
      Uma construção wsdl:operation em um wsdl:portType é mapeada para um método da interface de nó de extremidade de serviço. O nome de wsdl:operation é mapeado para o nome do método. O wsdl:operation contém os elementos wsdl:input e wsdl:output que referem-se às construções de pedido e resposta wsdl:message utilizando o atributo message. O wsdl:operation pode conter um elemento wsdl:fault que faça referência a um wsdl:message descrevendo a falha. Essas falhas são mapeadas para as classes Java que estendem a exceção java.lang.Exception conforme descrito na seção 4.3.6 da especificação JAX-RPC.
      • Efeito de formato quebrado de document literal:
        Se o arquivo WSDL utilizar o formato de documento literal agrupado, os parâmetros de método serão mapeados a partir do xsd:element do wrapper. O formato documento literal agrupado e literal é detectado automaticamente pelo comando WSDL2Java. Os critérios a seguir devem ser atendidos:
        • O arquivo WSDL deve ter style="document" em sua construção wsdl:binding.
        • As construções de entrada e saída das operações na wsdl:binding devem conter elementos soap:body que contêm use="literal".
        • O wsdl:message citado pela construção de entrada wsdl:operation deve ter uma única parte.
        • A parte deve usar o atributo do elemento para fazer referência a um xsd:element.
        • O xsd:element citado, ou elemento wrapper, deve ter o mesmo nome do wsdl:operation.
        • O elemento wrapper não deve conter xsd:attributes.
        Nesses casos, cada nome de parâmetro é mapeado de um xsd:element aninhado contido no elemento wrapper. O tipo do parâmetro é mapeado a partir do tipo do xsd:element aninhado. Por exemplo:
        WSDL:
        
        <xsd:element name="myMethod"> 
        	<xsd:complexType>
        		<xsd:sequence> 
        			<xsd:element name="param1" type="xsd:string"/>
        			<xsd:element name="param2" type="xsd:int"/> 
        		</xsd:sequence> 
        	</xsd:complexType>
        </xsd:element>
        ... 
        <wsdl:message name="response"/> 
        	<part name="parameters" element="ns:myMethod"/> 
        </wsdl:message name="response"/> 
        
        <wsdl:message name="response"/>
        ...
        <wsdl:operation name="myMethod"> 
        	<input name="input" message="request"/>  
        	<output name="output" message="response"/>  
        </wsdl:operation> 
        
        Java: 
        
        void myMethod(String param1, int param2) ... 
      • Mapeamento de parâmetro:

        Se o formato agrupado documento e literal não for detectado, o mapeamento do parâmetro seguirá as regras de mapeamento de JAX-RPC normais definidas na seção 4.3.4 da especificação JAX-RPC.

        Cada parâmetro é definido por uma parte wsdl:message referenciada a partir dos elementos de entrada e saída.
        • Um wsdl:part no wsdl:message de pedido é mapeado para um parâmetro de entrada.
        • Um wsdl:part no wsdl:message de resposta é mapeado para o valor de retorno. Se houver vários wsdl:parts na mensagem de resposta, eles serão mapeados para os parâmetros de saída.
          • Uma classe Holder é gerada para cada parâmetro output, conforme apresentado na seção 4.3.5 da especificação JAX-RPC.
        • Um wsdl:part que é tanto o wsdl:message de pedido quanto o de resposta é mapeado para um parâmetro inout.
          • Uma classe Holder é gerada para cada parâmetro inout, conforme apresentado na seção 4.3.5 da especificação JAX-RPC.
          • O atributo wsdl:operation parameterOrder define a ordem dos parâmetros.
        XML:
        
        <wsdl:message name="request">
        	<part name="param1" type="xsd:string"/>
        	<part name="param2" type="xsd:int"/>
        </wsdl:message name="response"/>
        
        <wsdl:message name="response"/>  
        ...
        <wsdl:operation name="myMethod" parameterOrder="param1, param2">
        	<input name="input" message="request"/>
        	<output name="output" message="response"/>
        </wsdl:operation> 
        
        
        Java: 
        
        void myMethod(String param1, int param2) ... 
    • Mapeamento de wsdl:binding:
      O comando WSDL2Java utiliza as informações de wsdl:binding para gerar um stub do cliente específico para a implementação. O WebSphere Application Server usa as informações wsdl:binding no lado do servidor para desserializar corretamente a solicitação, chamar o serviço da Web e serializar a reposta. As informações da wsdl:binding não afetam a geração da interface do nó de extremidade de serviço, exceto quando o formato document e literal agrupado for utilizado, ou quando houver anexos MIME.
      • Anexos de MIME:
        Para um arquivo WSDL em conformidade com WSDL 1.1, a parte de uma mensagem de operação que é definida na ligação como um anexo MIME torna-se um parâmetro do tipo do anexo independentemente da parte declarada. Por exemplo:
        XML:
        <wsdl:types>
        	<schema ...>
        		<complexType name="ArrayOfBinary">
        			<restriction base="soapenc:Array">
        			  <attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:binary[]"/>
        			</restriction>
        		</complexType>
        	</schema>
        </wsdl:types>
        
        <wsdl:message name="request">
        	<part name="param1" type="ns:ArrayOfBinary"/>
        <wsdl:message name="response"/>
        
        <wsdl:message name="response"/>
         ... 
        
        	<wsdl:operation name="myMethod">
        		<input name="input" message="request"/>
        		<output name="output" message="response"/>
        	</wsdl:operation>
          ...
        
        <binding ...  
        	<wsdl:operation name="myMethod">
        		<input>
        			<mime:multipartRelated> 
        				<mime:part>
        					<mime:content part="param1" type="image/jpeg"/>
        				</mime:part>
        			</mime:multipartRelated>
        		</input>
        		 ...
        	</wsdl:operation>
        
        Java: 
        
        void myMethod(java.awt.Image param1) ... 
        A especificação JAX-RPC requer suporte para os seguintes tipos MIME:
        Tabela 4. Mapeamento de Tipo MIME e de Tipo Java. Descreve o mapeamento entre tipos MIME e tipos Java.
        Tipo de MIME Tipo Java
        image/gif java.awt.Image
        image/jpeg java.awt.Image
        text/plain java.lang.String
        multipart/* javax.mail.internet.MimeMultipart
        text/xml javax.xml.transform.Source
        application/xml javax.xml.transform.Source
    • Mapeamento de wsdl:service:

      O elemento wsdl:service é mapeado para uma interface de serviço gerada. A interface de serviço gerada contém métodos para acessar cada uma das portas do elemento wsdl:service. A interface de serviço gerada é discutida nas seções 4.3.9, 4.3.10 e 4.3.11 da especificação JAX-RPC.

      Além disso, o elemento wsdl:service é mapeado para a classe ServiceLocator específica da implementação, que é uma implementação da interface de serviço gerada.

Leia sobre a ferramenta de linha de comandos WSDL2Java para aplicativos JAX-RPC (Java API for XML-based Remote Procedure Call) para saber mais sobre esta ferramenta.


Mapeamento entre Mensagens WSDL e SOAP

O arquivo WSDL define o formato da mensagem SOAP que é transmitida por meio de conexões de rede. O comando WSDL2Java e o tempo de execução do WebSphere Application Server utilizam as informações no arquivo WSDL para garantir que a mensagem SOAP seja serializada e desserializada de maneira adequada.

Se um elemento wsdl:binding indicar que uma mensagem é enviada utilizando um formato RPC, a mensagem SOAP conterá um elemento definindo a operação. Se um elemento wsdl:binding indicar que a mensagem é enviada utilizando um formato de documento, a mensagem SOAP não conterá o elemento de operação.

Se o elemento wsdl:part for definido utilizando o atributo type, o nome e o tipo da parte serão utilizados na mensagem. Se o elemento wsdl:part for definido utilizando o atributo element, o nome e o tipo do elemento serão utilizados na mensagem. O atributo element não é suportado pela especificação JAX-RPC quando use="encoded".

Se um elemento wsdl:binding indicar que uma mensagem é codificada, os valores da mensagem serão enviados com informações sobre xsi:type. Se um elemento wsdl:binding indicar que uma mensagem é literal, os valores na mensagem geralmente não serão enviados com informações sobre xsi:type. Por exemplo:
DOCUMENT/LITERAL
WSDL:

<xsd:element name="c" type="xsd:int"/>
<xsd:element name="method">
	<xsd:complexType>
		<xsd:sequence>
			<xsd:element name="a" type="xsd:string"/>
			<xsd:element ref="ns:c"/>
		</xsd:sequence>
	</xsd:complexType>
</xsd:element>
...
		<wsdl:message name="request">	
				<part name="parameters" element="ns:method"/> 
		</wsdl:message>
	... 
	<wsdl:operation name="method"> 
		<input message="request"/> 
	...

Message:
<soap:body>
		<ns:method>
			<a>ABC</a>
			<c>123</a>
		<ns:method>
</soap:body>
RPC/ENCODED
WSDL: 
<xsd:element name="c" type="xsd:int"/>

...
		<wsdl:message name="request">	
				<part name="a" type="xsd:string"/>
				<part name="b" element="ns:c"/>
		</wsdl:message>
	... 
	<wsdl:operation name="method"> 
				<input message="request"/> 
	...

Message:
<soap:body> 
		<ns:method> 
			<a xsi:type="xsd:string">ABC</a>
			<o atributo element não é permitido no modo rpc/encoded> 
		</ns:method>
	</soap:body>
 
DOCUMENT/LITERAL não agrupado 
WSDL:
<xsd:element name="c" type="xsd:int"/>

...
		<wsdl:message name="request">	
				<part name="a" type="xsd:string"/>
				<part name="b" element="ns:c"/>
		</wsdl:message>
	... 
	<wsdl:operation name="method"> 
				<input message="request"/>

...

Message:
<soap:body>
		<a>ABC</a>
		<c>123</a> 
</soap:body>

Ícone que indica o tipo de tópico Tópico de Referência



Í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=rwbs_map
Nome do arquivo: rwbs_map.html