Vários objetos são gerados quando você importa a partir do WSDL mas restrições podem se aplicar.
O importador de WSDL anexa o resultado da operação de importação em um arquivo de relatório, listando todos os erros que ocorreram durante o processo. O nome do arquivo de relatório é application or library.wsdl.report.txt ou message set.wsdl.report.txt.
Os arquivos SOAP .xsds necessários são incluídos no aplicativo ou na biblioteca. Se você estiver usando um conjunto de mensagens, os arquivos .mxsds serão incluídos no conjunto de mensagens.
Para analisar documentos da instância do SOAP 1.2, remova manualmente as definições de SOAP 1.1 e importe as definições de SOAP 1.2 usando o assistente de Arquivo de Definições de Mensagens, selecionando Mensagem fornecida pela IBM.
Se seu aplicativo, biblioteca ou conjunto de mensagens tiver camadas TDS ou CWF, talvez você ache que receba vários avisos com relação às definições de SOAP importadas. A maioria deles pode ser ignorada, mas leve em conta os valores permitidos para atributos Booleanos. No SOAP 1.1, os valores Booleanos são 1 ou 0, enquanto no SOAP 1.2 os valores são true e false. A representação XML de valores booleanos para um aplicativo, biblioteca ou conjunto de mensagens é especificada nas propriedades físicas do formato físico de XML e pode precisar ser configurada adequadamente.
A política de saída xsi:type na mensagem é configurada como "Nunca".
Uma mensagem de entrada | Uma mensagem de saída | |
---|---|---|
Derivado de | O filho wsdl:input (se houver algum) da operação WSDL e a mensagem WSDL e partes que ele identifica | O filho wsdl:output (se houver algum) da operação WSDL e a mensagem WSDL e partes que ele identifica |
Nome do Elemento | O valor do atributo de nome no elemento de operação WSDL | O valor do atributo de nome no elemento de operação WSDL com o sufixo "Response" |
Espaço de Nomes do Elemento | O valor do atributo namespace no elemento soap:body correspondente | O valor do atributo namespace no elemento soap:body correspondente |
Cada mensagem é um tipo complexo local, sendo uma sequê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. Estes elementos não possuem espaço de nomes (a representação de esquema subjacente possui form="unqualified") e têm escopo definido localmente para evitar conflitos de nome. O tipo desses elementos locais é o tipo de esquema XML referido pelo atributo de tipo do elemento da parte correspondente. O tipo é global no esquema WSDL.
Se o elemento soap:body foi definido com use="encoded" na definição de WSDL, a definição de mensagem incluirá uma referência no grupo de atributos encodingStyle no namespace SOAP-ENV e a política de saída xsi:type na mensagem será configurada como "Seguir as regras de codificação SOAP". Caso contrário, a política de saída xsi:type na mensagem será configurada como "Nunca".
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="s:schema"/>
</xsd:sequence>
</xsd:complexType>
Para que arquivos WSDL desse tipo sejam
importados com sucesso para o WebSphere Message Broker Toolkit sem
erros de validação, você deve incluir manualmente uma instrução de importação de namespace
no namespace do esquema, por exemplo:<xsd:import namespace="http://www.w3.org/2001/XMLSchema"/>
Coloque a instrução de importação primeiro no elemento de esquema e assegure-se de que ele apareça antes de qualquer definição de tipo complexo ou de elemento. Revalide o WSDL clicando com o botão direito do mouse no WSDL atualizado e clicando em Validar.
<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, que pode ser serializada durante a gravação, as restrições a seguir se aplicam.
Por exemplo, o primeiro elemento de uma matriz especificada com offset[2] de ser acessado no ESQL, não como InputRoot.MRM.array.item[3], mas como InputRoot.MRM.array.item[1].
<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 de broker manipula esse documento conforme o esperado, mas, na matriz de codificação SOAP, os elementos também podem usar os elementos de tipo do namespace de codificação SOAP. Portanto, um aplicativo que está usando a mesma definição de 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>
Para tratar desse caso, você deve editar manualmente o modelo de broker criado importando o WSDL, a menos que seja aceitável que o analisador o trate como um elemento definido automaticamente.