Importando a partir do WSDL: Objetos Gerados e Restrições

Esta seção descreve os objetos que são gerados quando uma definição WSDL é importada e algumas restrições das quais você precisa estar ciente.

Objetos Gerados

Arquivos copiados por importação da linha de comandos
O comando mqsicreatemsgdefsfromwsdl copia os arquivos WSDL necessários para o espaço de trabalho antes da execução do processo de importação. Estes são o arquivo WSDL de nível superior e as importações resolvidas por meio de um local relativo. Os arquivos são copiados no conjunto de mensagens especificado para uma pasta chamada importFiles.
Arquivo de Relatório
O importador WSDL anexa o resultado da operação de importação a um arquivo de relatório, listando os erros ocorridos durante o processo. O nome de arquivo de relatório é <conjunto de mensagens>.wsdl.report.txt.
Definições de Mensagem SOAP
O SOAP mxsds requerido é incluído no conjunto de mensagens. No momento, as definições SOAP 1.1 são sempre importadas. Existem várias razões para isso:
  • O SOAP 1.1 é mais amplamente utilizado do que o SOAP 1.2.
  • Não existe nenhuma ligação SOAP 1.2 padrão para o WSDL 1.1. Isto significará que o importador WSDL não pode determinar com segurança se o SOAP 1.2 é requerido.
  • Não é possível importar as definições do SOAP 1.1 e do SOAP 1.2 porque elas utilizam o mesmo nome de mensagem (por exemplo, Envelope).

Se precisar analisar documentos da instância do SOAP 1.2, será necessário remover manualmente as definições do SOAP 1.1 e importar as definições do SOAP 1.2 utilizando o assistente de Arquivo de Definição de Mensagem, selecionando Mensagem Fornecida pela IBM.

Se seu conjunto de mensagens tiver camadas TDS ou CWF, você poderá perceber que obtém vários avisos nas definições de SOAP importadas. A maioria delas pode ser ignorada, mas é necessário considerar os valores permitidos para atributos booleanos. No SOAP 1.1, um booleano tem o valor 1 ou 0, enquanto no SOAP 1.2, os valores são true e false. A representação XML de valores booleanos para um conjunto de mensagens precisa ser especificada nas propriedades físicas do formato físico XML e precisa ser configurada de forma adequada.

Arquivos de Definição de Mensagem
Outros nomes de arquivo de definição de mensagem são criados como <nome do arquivo de entrada>.mxsd e seus conteúdos dependem do estilo WSDL.
estilo de documento
As partes da mensagem WSDL para style="document" (que incluem todos os cabeçalhos SOAP, partes de falhas e de falhas do cabeçalho) se referem a um elemento definido no Esquema XML. Este elemento é importado como um elemento global e a mensagem do intermediário no mxsd.

A Política de Saída xsi:type na mensagem está configurada como "Nunca".

estilo de rpc
As partes da mensagem WSDL para style="rpc" (e exclusivamente as alocadas para o corpo SOAP) se referem a um tipo definido no Esquema XML. Neste caso, as mensagens de entrada e de saída são criadas da seguinte forma:
  Uma mensagem de entrada Uma mensagem de saída
Derivado de filho wsdl:input (se houver algum) da operação WSDL e a mensagem WSDL e partes que ele identifica filho wsdl:output (se houver algum) da operação WSDL e a mensagem WSDL e partes que ele identifica
Nome do Elemento valor do atributo de nome no elemento de operação WSDL valor do atributo de nome no elemento de operação WSDL sufixado por "Response"
Espaço de Nomes do Elemento valor do atributo de espaço de nomes no elemento soap:body correspondente valor do atributo de espaço de nomes no elemento soap:body correspondente

Cada mensagem é um tipo complexo local, sendo uma seqüência de elementos. O nome de cada elemento é o valor do atributo de nome nas partes WSDL da mensagem identificadas pelo elemento de entrada ou de saída, respectivamente. Estes elementos não possuem espaço de nomes (a representação do esquema subjacente tem form="unqualified") e têm o escopo definido localmente para evitar conflitos de nomes. O tipo destes elementos locais é o tipo de Esquema XML referido pelo atributo de tipo do elemento da parte correspondente. (O tipo será global no esquema WSDL).

Se o soap:body tiver sido definido com use="encoded" na definição WSDL, a definição de mensagem incluirá uma referência ao grupo de atributos encodingStyle no espaço de nomes SOAP-ENV e a Política de Saída xsi:type na mensagem será configurada como "Seguir Regras de Codificação SOAP". Caso contrário, a Política de Saída xsi:type na mensagem será configurada como "Nunca".

Restrições

Isto descreve algumas das restrições relacionadas à importação de definições WSDL. Ocorrem quando as definições WSDL não são compatíveis com WS-I.
Matrizes SOAP
Uma definição WSDL 1.1 pode definir uma Matriz SOAP (aplicável apenas ao estilo WSDL rpc-encoded e não compatível com WS-I):
    <xsd:complexType name="t">
          <xsd:complexContent>
            <xsd:restriction base="SOAP-ENC:Array">
              <xsd:sequence>
                <xsd:element name="item" type="string" maxOccurs="unbounded"/>
              </xsd:sequence>
              <xsd:attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="xsd:string[]"/>
                        </xsd:restriction>
          </xsd:complexContent>
    </xsd:complexType>

Algumas utilizações da matriz SOAP não são totalmente suportadas. Embora seja criada uma árvore útil durante a análise (e pode ser serializada durante a gravação), observe que:

  • o modelo não considera o atributo SOAP-ENC:arrayType.
  • o modelo para matrizes transmitidas parcialmente não considera o atributo SOAP-ENC:offset.

    Por exemplo, o primeiro elemento de uma matriz especificado com offset[2] seria acessado no ESQL não como InputRoot.MRM.array.item[3], mas como InputRoot.MRM.array.item[1].

  • o modelo para matrizes multidimensionais nivela a representação em uma única dimensão. Por exemplo, uma matriz bidimensional é acessada no ESQL não como InputRoot.MRM.array.item[x][y], mas como InputRoot.MRM.array.item[i] em que o índice i teria que ser calculado apropriadamente.
Elementos Anônimos
O trecho WSDL acima descreve um documento da instância SOAP no seguinte formato:
    <SOAP-ENC:Array SOAP-ENC:arrayType="xsd:string[3]">
       <item xsi:type="xsd:string">A general text string</item>
       <item xsi:type="xsd:token">A restriction of the string type</item>
       <item xsi:type="xsd:Name">ARestrictionOfTheTokenType</item>
    </SOAP-ENC:Array>

O modelo do intermediário manipula isso conforme o esperado mas, na codificação SOAP, os elementos da matriz também podem utilizar os elementos de tipo a partir do espaço de nomes de codificação SOAP. Isto significa que um aplicativo que utiliza a mesma definição WSDL pode criar um documento da instância no seguinte formato:

    <SOAP-ENC:Array SOAP-ENC:arrayType="xsd:string[3]">
       <SOAP-ENC:string>A general text string</SOAP-ENC:string>
       <SOAP-ENC:token>A restriction of the string type</SOAP-ENC:token>
       <SOAP-ENC:Name>ARestrictionOfTheTokenType</ SOAP-ENC:Name>
    </SOAP-ENC:Array>

O modelo do intermediário criado pela importação do WSDL teria que ser editado manualmente para tratar este caso, a menos que seja aceitável que ele seja tratado pelo analisador como um elemento autodefinido.

Conceitos relacionados
Modelagem de Mensagens
O Modelo de Mensagem
Tarefas relacionadas
Desenvolvendo Modelos de Mensagens
Trabalhando com um Arquivo de Definição de Mensagem
Trabalhando com Objetos de Modelo de Mensagem
Referências relacionadas
Informações de Referência do Modelo de Mensagens
Formatos de Importação
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback
Direitos Autorais IBM Corporation 1999, 2006 Última Atualização: 1 Sep 2006
ad30560_