Importación de WSDL: objetos generados y restricciones

Restricciones que hay que tener en cuenta y los objetos generados al importar una definición WSDL.

Objetos generados

Archivos copiados mediante la importación de línea de mandatos
El mandato mqsicreatemsgdefsfromwsdl copia los archivos WSDL que necesita en el espacio de trabajo antes de ejecutar el proceso de importación. Estos son el archivo WDSL de nivel superior y cualquier importación resuelta desde una ubicación relativa. Los archivos se copian bajo el conjunto de mensajes especificado en una carpeta denominada importFiles.
Archivo de informe
El importador WSDL añade el resultado de la operación de importación a un archivo de informe que lista los errores que se han producido durante el proceso. El nombre del archivo de informe es <conjunto mensajes>.wsdl.report.txt
Definiciones de mensajes SOAP
Los archivos .mxsd de SOAP se añaden al conjunto de mensajes. Actualmente sólo se importan siempre las definiciones SOAP 1.1. Hay varias razones para ello:
  • SOAP 1.1 se utiliza más comúnmente que SOAP 1.2.
  • No hay un enlace SOAP 1.2 estándar para WSDL 1.1. Esto significa que el importador WSDL no puede determinar de forma fiable que SOAP 1.2 se necesita.
  • No se puede importar definiciones SOAP 1.1 y SOAP 1.2 al mismo tiempo porque utilizan el mismo nombre de mensaje (por ejemplo, Envelope).

Si tiene que analizar documentos de la instancia SOAP 1.2 debe suprimir manualmente las definiciones SOAP 1.1 e importar las definiciones SOAP 1.2 mediante el asistente de archivo de definición de mensajes, seleccionando Mensaje suministrado por IBM.

Si el conjunto de mensajes tiene capas TDS o CWF es posible que obtenga diferentes avisos relacionados con las definiciones SOAP importadas. La mayor parte de estos se pueden ignorar pero es posible que deba tener en cuenta los valores permitidos para los atributos booleanos. En SOAP 1.1 los valores booleanos son 1 ó 0, mientras que en SOAP 1.2 los valores son true y false. La representación XML de los valores booleanos para un conjunto de mensajes se especifica en las propiedades físicas del formato físico XML y es posible que se deba establecer en consecuencia.

Archivos de definición de mensaje
Otros nombres de archivos de definición de mensajes se crean como <nombre archivo entrada>.mxsd y su contenido depende del estilo WSDL.
document-style
Las partes del mensaje WSDL correspondientes a style=”document” (que incluye todas las partes de la cabecera SOAP, errores y errores de cabecera) hacen referencia a un elemento definido en el esquema XML. Este elemento se importa como un elemento global y un mensaje del intermediario en el archivo mxsd.

La política de salida xsi:type del mensaje se establece en “Nunca”.

rpc-style
Las partes del mensaje WSDL correspondientes a style=”rpc” (y asignadas exclusivamente al cuerpo del mensaje SOAP) hacen referencia a un tipo definido en el esquema XML. En este caso, los mensajes de entrada y salida se crean del modo siguiente:
  Un mensaje de entrada Un mensaje de salida
Derivado de wsdl:input hijo (si lo hay) de la operación WSDL y el mensaje WSDL y las partes que lo identifica wsdl:output hijo (si lo hay) de la operación WSDL y el mensaje WSDL y las partes que lo identifica
Nombre del elemento Valor del atributo de nombre del elemento de la operación WSDL Valor del atributo de nombre del elemento de la operación WSDL que tiene un sufijo de respuesta
Espacio de nombres del elemento Valor del atributo de espacio de nombres del elemento soap:body correspondiente Valor del atributo de espacio de nombres del elemento soap:body correspondiente

Cada mensaje tiene un tipo complejo local que es una secuencia de elementos. El nombre de cada elemento es el valor del atributo de nombre de las partes WSDL del mensaje identificadas por el elemento de entrada o de salida. Estos elementos no tienen ningún espacio de nombre (la representación del esquema subyacente tiene el formato form="unqualified") y su ámbito es local para evitar colisiones de nombres. El tipo de estos elementos locales es el tipo de esquema XML al que hace referencia el atributo de tipo del elemento de la parte correspondiente. El tipo es global en el esquema WSDL.

Si se ha definido soap:body con use="encoded" en la definición WSDL entonces la definición del mensaje incluye una referencia a encodingStyle del grupo de atributos en el espacio de nombres SOAP-ENV y la política de salida xsi:type del mensaje se establece en "Seguir reglas de codificación SOAP". De lo contrario, la política de salida xsi:type del mensaje se establece en "Nunca".

Limitaciones

Aquí se describen algunas de las restricciones relacionadas con la importación de definiciones WSDL. Estas son las definiciones WSDL no son compatibles con WS-I.
Matrices SOAP
Una definición de WSDL 1.1 puede definir una matriz SOAP (aplicable únicamente al estilo de codificación rpc de WDSL y no conforme a las normas 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>

Algunos uso de la sintaxis de las matrices SOAP no está soportada. Aunque se crea un árbol útil durante el análisis y se puede serializar durante la escritura, tenga en cuenta que:

  • el modelo no tiene en cuenta el atributo SOAP-ENC:arrayType.
  • el modelo de matrices transmitidas parcialmente no tiene en cuenta el atributo SOAP-ENC:offset.

    Por ejemplo, es necesario acceder al primer elemento de una matriz especificada con offset[2] en ESQL, no como InputRoot.MRM.array.item[3], sino como InputRoot.MRM.array.item[1].

  • el modelo de las matrices multidimensionales reduce la representación a una sola dimensión. Por ejemplo, en ESQL se accede a una matriz bidimensional, no como nputRoot.MRM.array.item[x][y] sino como InputRoot.MRM.array.item[i] donde el índice i debe calcularse correctamente.
Elementos anónimos
El extracto de WSDL anterior describe un documento de una instancia SOAP con el formato siguiente:
    <SOAP-ENC:Array SOAP-ENC:arrayType="xsd:string[3]">
       <item xsi:type="xsd:string">Una serie de caracteres de texto general</item>
       <item xsi:type="xsd:token">Una restricción del tipo de serie</item>
       <item xsi:type="xsd:Name">ARestrictionOfTheTokenType</item>
    </SOAP-ENC:Array>

El modelo de intermediario maneja este código como está previsto, pero en la codificación SOAP los elementos de la matriz tienen permiso para utilizar los elementos de tipo del espacio de nombres de codificación SOAP. Esto significa que una aplicación que utilice la misma definición puede crear un documento de la instancia con el formato siguiente:

    <SOAP-ENC:Array SOAP-ENC:arrayType="xsd:string[3]">
       <SOAP-ENC:string>Una serie de caracteres de texto general</SOAP-ENC:string>
       <SOAP-ENC:token>Una restricción del tipo de serie</SOAP-ENC:token>
       <SOAP-ENC:Name>ARestrictionOfTheTokenType</ SOAP-ENC:Name>
    </SOAP-ENC:Array>

El modelo de intermediario creado por la importación WSDL debe editarse manualmente para manejar este caso, a menos que el analizador pueda tratarlo como un elemento autodefinido.

Conceptos relacionados
Modelado de mensajes
El modelo de mensaje
Tareas relacionadas
Desarrollo de modelos de mensaje
Cómo trabajar con un archivo de definición de mensajes
Cómo trabajar con objetos de modelo de mensaje
Referencia relacionada
Información de referencia de modelo de mensaje
Formatos de importación
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009.
Última actualización : 2009-02-16 13:54:51

ad30560_