Correlación de gráficos de datos SDO para mensajes de servicios web
La estructura de los mensajes de servicios web que describen los gráficos de datos SDO (Service Data Objects) de Versión 1 para los mensajes de servicios web.
Diseño global de un mensaje de servicios web
Un mensaje de servicios web se describe mediante una serie de formato y tres campos de metadatos: operationName, messageName y messageType. La carga del mensaje se divide en tres secciones diferentes; las cabeceras, los adjuntos y el texto.
El nodo Info es el nivel superior del gráfico de datos SDO de todos los mensajes de servicios web. La tabla siguiente describe las propiedades del nodo Info y los tipos asociados.
Nombre de propiedad | Tipo de propiedad | Descripción de la propiedad |
---|---|---|
operationName | java.lang.String | Identifica la operación WSDL asociada al mensaje. Si el servicio de acceso a datos no puede identificar el mensaje este campo es nulo. Consulte Identificación de los mensajes de servicios web. |
messageName | java.lang.String | Identifica el mensaje WSDL asociado al mensaje. Si el servicio de acceso a datos no puede identificar el mensaje este campo es nulo. Consulte Identificación de los mensajes de servicios web. |
messageType | java.lang.String | Identifica el tipo de servicio web de la instancia del mensaje. Este campo puede tener los valores input, output, fault, ambiguous. Si el servicio de acceso a datos no puede identificar el mensaje este campo es nulo. Consulte Identificación de los mensajes de servicios web. |
headers | java.util.List de los objetos de datos. | Contiene una lista de los objetos de datos de entrada de cabecera. Cada cabecera SOAP del mensaje da como resultado una entrada de cabecera de esta lista. Consulte Diseño de la cabecera de mensajes. |
attachments | java.util.List de los objetos de datos. | Contiene una lista de los objetos de datos de entrada adjuntos. En los mensajes SOAP con adjuntos, cada parte MIME del mensaje (excepto la parte MIME que contiene el sobre SOAP) está correlacionada con una entrada de esta lista. Consulte Diseño de los adjuntos de mensajes. |
body | commonj.sdo.DataObject | Un objeto de datos anidado que representa el texto del sobre SOAP. Consulte Diseño del texto de mensajes. |
Identificación de los mensajes de servicios web
El proceso de los mensajes depende de si los mensajes tienen definiciones WSDL. La cantidad mínima de información necesaria para procesar sin WSDL es "SOAP:". La cantidad mínima de información necesaria para procesar con WSDL es: "SOAP:ubicación,espacio_nombres,servicio,puerto". Si la serie de formato no incluye todos estos cinco campos, el servicio de acceso a datos SOAP intenta procesar el mensaje sin WSDL.
- Proceso de mensajes sin definiciones WSDL: si la serie de formato no incluye la información WSDL completa, el servicio de acceso a datos SOAP procesa el mensaje sin intentar que el mensaje coincida con las definiciones de WSDL. Como resultado, operationName y messageName se establecen en nulo y messageType sólo se establece cuando se procesa un mensaje de error.
- Proceso de mensajes con definiciones WSDL: si la serie de formato incluye
<ubicación WSDL>,<espacio de nombres de servicio>,<nombre de servicio>
y <nombre puerto>, los servicios de acceso a datos de SOAP y beans procesan los
mensajes utilizando las definiciones WSDL del servicio. Nota: En cualquiera de las circunstancias siguientes, el proceso de mensajes SOAP falla después de proporcionar toda la información WSDL necesaria:
- el servicio de acceso a datos SOAP no puede localizar el WSDL
- el WSDL no corrobora el mensaje.
Cuando el servicio de acceso a datos SOAP procesa un mensaje de solicitud o respuesta SOPA, intenta que coincida con las definiciones de mensajes del WSDL. Generalmente, hay una coincidencia exclusiva y operationName, messageName y messageType se cumplimentan correctamente. Si hay más de una definición de coincidencia, el servicio de acceso a datos selecciona una definición de mensaje, cumplimenta operationName y messageName, y establece messageType en ambiguous.
Cuando se procesan mensaje anómalos, la identificación es ligeramente diferente. En todos los casos, se establece messageType en fault. Si el mensaje coincide con una definición de error exclusiva en el WSDL, entonces las propiedades operationName y messageName también se establecen.
Diseño de la cabecera de mensajes
La lista de cabeceras tiene dos tipos de entrada, entrada de cabecera o entrada de cabecera de enlace, dependiendo de si la cabecera está basada en la parte del mensaje o no.
- la cabecera forma parte del mensaje que se ha diseñado en WSDL
- la cabecera forma parte del mensaje que no se ha diseñado en WSDL pero está basado en una parte del mensaje
El tipo de entrada de cabecera de enlace se utiliza cuando el enlace SOAP para el mensaje tiene enlazada una parte del cuerpo en un adjunto MIME. (Esto sucede cuando se utiliza un elemento <MIME:content> para enlazar una parte del mensaje a un adjunto.) Para programar una mediación coherente, todos los datos de texto se almacenan en el nodo de texto incluido en el gráfico. En lugar de la entrada de adjunto normal se coloca una entrada de adjunto enlazada a la lista de adjuntos. La entrada de adjunto enlazada contiene los metadatos MIME del adjunto y el nombre de la parte del mensaje que contiene los datos tomados de este adjunto. Esto permite que las mediaciones diseñadas para procesar adjuntos localicen los datos en la parte del texto correspondiente al gráfico de datos. Para obtener un modelo de este adjunto, consulte Entrada de cabecera enlazada.
Entrada de cabecera
Nombre de propiedad | Tipo de propiedad | Descripción de la propiedad |
---|---|---|
mustUnderstand | java.lang.Boolean | Transporta el valor del atributo mustUnderstand en la cabecera SOAP, si está presente. |
actor | java.lang.String | Transporta el valor del atributo actor en la cabecera SOAP, si está presente. |
any | commonj.sdo.Sequence | Contenedor del contenido de la cabecera SOAP. |
Entrada de cabecera enlazada
Nombre de propiedad | Tipo de propiedad | Descripción de la propiedad |
---|---|---|
mustUnderstand | java.lang.Boolean | Transporta el valor del atributo mustUnderstand en la cabecera SOAP, si está presente. |
actor | java.lang.String | Transporta el valor del atributo actor en la cabecera SOAP, si está presente. |
messagePart | java.lang.String | Contiene el nombre de la parte del mensaje que transporta los datos de esta cabecera de mensaje. |
Diseño de los adjuntos de mensajes
Los adjuntos de mensajes se manejan de un modo similar a las cabeceras y sus instancias rellenan la lista de adjuntos en el nodo Info.
Hay dos tipos de entradas de adjuntos para manejar los adjuntos MIME: entrada de adjunto y entrada de adjunto de enlace.
La entrada de adjunto es para los adjuntos generales: consulte la sección Entrada de adjunto.
La entrada de adjunto enlazada incluye los elementos <MIME:content> que enlazan una parte del texto a un adjunto MIME. Si está programando una mediación, tiene que saber cómo localizar los datos en el gráfico. Para programar una mediación de modo coherente, se colocan los datos del adjunto en el texto del mensaje y se hace referencia a los mismos mediante el nombre de parte de la entrada de cabecera, que incluye los otros metadatos MIME. Para ver un modelo de este adjunto, consulte Entrada de adjunto enlazada.
Entrada de adjunto
Nombre de propiedad | Tipo de propiedad | Descripción de la propiedad |
---|---|---|
contentType | java.lang.String | Transporta el contentType de la parte de MIME que se representa mediante la entrada de adjunto. |
contentTransferEncoding | java.lang.String | Transporta el contentTransferEncoding de la parte de MIME que se representa mediante la entrada de adjunto. |
contentId | java.lang.String | Transporta el contentId de la parte de MIME que se representa mediante la entrada de adjunto. |
data | byte[] | Transporta el contenido del elemento MIME como una matriz de bytes. |
Entrada de adjunto enlazada
Nombre de propiedad | Tipo de propiedad | Descripción de la propiedad |
---|---|---|
contentType | java.lang.String | Transporta el contentType de la parte de MIME que se representa mediante la entrada de adjunto. |
contentTransferEncoding | java.lang.String | Transporta el contentTransferEncoding de la parte de MIME que se representa mediante la entrada de adjunto. |
contentId | java.lang.String | Transporta el contentId de la parte de MIME que se representa mediante la entrada de adjunto. |
messagePart | java.lang.String | Contiene el nombre de la parte del mensaje que transporta los datos de este adjunto. |
Diseño del texto de mensajes
El diseño del objeto de datos del texto se define mediante el WSDL del servicio. El tipo del objeto de datos se deriva de la definición del mensaje en el WSDL. El objeto de datos tendrá una propiedad para cada parte de la definición del mensaje. El diseño de cada parte del mensaje sigue el convenio para correlacionar esquemas XML con SDO. Consulte Ejemplo de código de servicios web si desea más información.
Mensaje de error de servicios web
Si el mensaje es un mensaje de error, el campo messageType (del nodo Info del gráfico) se establecerá en "fault" y el texto del mensaje tendrá las propiedades siguientes:
Nombre de propiedad | Tipo de propiedad | Descripción de la propiedad |
---|---|---|
faultcode | javax.xml.namespace.QName | Transporta el valor faultcode del elemento de error SOAP |
faultstring | java.lang.String | Transporta el valor faultstring del elemento de error SOAP |
faultactor | java.lang.String | Transporta el valor faultactor del elemento de error SOAP |
detail | commonj.sdo.DataObject | Transporta el contenido del hijo de detalle del elemento de error SOAP |