Se puede utilizar el Validador WS-I para comprobar las definiciones WSDL en el
Perfil básico.
Para obtener más información sobre el perfil básico de WS-I, consulte
WS-I y, en concreto, el documento de perfil básico de WS-I:
Puede utilizar el Validador WS-I para comprobar las definiciones WSDL en el Perfil básico; consulte WS-I Basic Profile Versión 1.1.
Puede ejecutar el validador de cualquiera de las siguientes maneras:
- Manualmente en un recurso .wsdl específico en el entorno de trabajo.
Esto permite investigar y arreglar los problemas de conformidad con la WS-I; los problemas de validación
se visualizan como errores y avisos de lista de tareas.
- De forma automática, WSDL se importa o genera.
Puede importar definiciones WSDL utilizando el asistente Modelo de mensaje.
Puede controlar el comportamiento del validador estableciendo un nivel de conformidad para el perfil.
- Seleccione .
- Pulse Políticas de servicio y expandir Conformidad
del perfil.
- Seleccione uno de los siguientes perfiles:
- Nivel de conformidad AP WS-I (WS-I Attachments Profile 1.0)
- Nivel de conformidad SSBP WS-I (WS-I Simple SOAP Binding Profile 1.0)
- Seleccione un nivel de conformidad:
- Seleccione Sugerir conformidad para ejecutar el validador y tratar los errores como no recuperables, pero sólo notificar los avisos.
Éste es el valor predeterminado.
- Seleccione Requerir conformidad para ejecutar el validador con los errores y avisos tratados como no recuperables.
- Seleccione Ignorar conformidad si no desea ejecutar el validador.
La selección AP se aplica automáticamente al campo
SSBP, por lo tanto Ignorar no se puede seleccionar de forma explícita salvo que la opción AP se establezca en Ignorar.
Los siguientes términos hacen referencia a tres claras categorías de definición WSDL:
- document-literal significa la combinación style="document" y use="literal"
- rpc-literal significa la combinación de style="rpc" y use="literal"
- rpc-encoded significa la combinación de style="rpc" y use="encoded"
A continuación se muestran problemas de validación típicos
utilizando la terminología precedente:
- El WSDL está codificado en RPC
- WSDL con use="encoded" no cumple las especificaciones de WS-I y puede causar problemas operativos porque los productos de distintos proveedores pueden suponer cosas distintas sobre la carga útil SOAP prevista.
WS-I: (BP2406) El atributo de uso de un
soapbind:body, soapbind:fault, soapbind:header y
soapbind:headerfault no tiene el valor "literal".
- El WSDL es un document-literal, pero una o más definiciones de partes WSDL hacen referencia a los tipos de esquema XML.
- En document-literal WSDL, la carga útil del cuerpo SOAP es el elemento del esquema XML al que se hace referencia mediante la parte WSDL adecuada.
Si se especifica un tipo en lugar de un elemento, la carga útil SOAP es potencialmente ambigua (el nombre de la carga útil no está definido) y es probable que surjan problemas de interoperatividad.
WS-I: (BP2012) Un enlace document-literal contiene elementos
soapbind:body que hacen referencia a los elementos de partes de mensajes que no tienen el atributo de elemento.
- El WSDL es un rpc-literal o rpc-encoded, pero una o más definiciones de partes WSDL
hacen referencia a los elementos de esquema XML.
- En WSDL de estilo RPC, la carga útil del cuerpo SOAP es el nombre de operación WSDL y sus hijos son las partes WSDL que se especifican para esa operación.
Si se especifica un elemento en lugar de un tipo, la carga útil del mensaje SOAP es potencialmente ambigua (el nombre de la carga útil puede ser el nombre de la parte WSDL o el nombre de elemento del esquema WSDL) y es probable que surjan problemas de interoperatividad.
WS-I: (BP2013) Un enlace rpc-literal contiene elementos
soapbind:body que hacen referencia a los elementos de partes de mensajes que no tienen el atributo de tipo.
- El WSDL incluye las definiciones de header, headerfault o fault de SOAP que hacen referencia tipos de esquema XML.
- En WSDL de estilo RPC, el elemento body SOAP está definido correctamente a través de los tipos de esquema XML tal como se ha descrito anteriormente.
Sin embargo, los elementos header y fault SOAP no corresponden a una llamada a la función RPC de la misma forma que body.
En concreto, no hay concepto de 'parameters' en un elemento header o fault, y header o
fault siempre se deben definir en términos de elementos de esquema XML para evitar una ambigüedad potencial. De hecho, las definiciones de header y fault en WSDL son siempre
document-literal.
WS-I: (BP2113) Los elementos soapbind:header, soapbind:headerfault o soapbind:fault hacen referencia a los elementos wsd:part que no se definen utilizando sólo el atributo
"element".
- El WSDL es rpc-literal o rpc-encoded, pero no se ha especificado ningún espacio de nombres para una operación.
- En rpc-style WSDL, la carga útil de mensajes SOAP es el nombre de operación WSDL, calificado por un espacio de nombres que se especifica como parte del enlace WSDL.
Si no se especifica ningún espacio de nombres, la carga útil de mensajes SOAP es potencialmente ambigua (el nombre de carga útil puede que esté en ningún espacio de nombres, o de forma predeterminada puede utilizar un espacio de nombres distinto, como el espacio de nombres de destino de la definición WSDL) y es probable que surjan problemas de interoperatividad.
WS-I: (BP2020) un enlace de rpc-literal contiene elementos
soapbind:body que no tienen un atributo de espacio de nombres o tienen un valor de atributo de espacio de nombres que no es un URI absoluto.
- El WSDL incluye un enlace SOAP/JMS.
- Si el WSDL utiliza un URI de transporte SOAP/JMS no es compatible con WS-I.
Se muestra un error si se habilita la validación estricta WS-I. Para inhabilitar la
validación estricta WS-I, pulse y seleccione
WS-I BP 1.1: Permitir SOAP/JMS como URI de transporte. De forma predeterminada, la validación estricta
WS-I estará inhabilitada.
La interoperabilidad del servicio web se mejora si implementa las acciones siguientes:
- Utilice el estilo de documentos WSDL siempre que sea posible.
- Utilice la codificación de literales, si es necesario rpc-style WSDL.
- Asegúrese de que las definiciones de operaciones WSDL estén calificadas por un atributo de espacio de nombres válido, si se debe utilizar rpc-encoded WSDL.