Importación de WSDL: objetos generados y restricciones

En esta sección se describen los objetos que se generan cuando se importa una definición WSDL y algunas restricciones que debe tener en cuenta.

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 mediante 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 mxsd de SOAP se añaden al conjunto de mensajes. Actualmente siempre se importan 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 un valor booleano tiene el valor 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 correspondientes a style=”document” (que incluye todas las partes correspondientes a 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 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 salida respectivamente. 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 será 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 WSDL 1.1 puede definir una matriz SOAP (que sólo es aplicable al estilo de codificación rpc de WSDL y no es compatible con 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 práctico 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, el primer elemento de una matriz especificada con offset[2] se accederá 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 puede utilizar 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, 2006 Última actualización: 22/08/2006
ad30560_