Web Services Addressing (WS-Addressing) forma parte de la familia de especificaciones relacionadas con los servicios web desarrolladas por el W3C. Los impulsores de esta especificación fueron BEA Systems, IBM, Microsoft, SAP y Sun Microsystems.
Esta especificación provee de un mecanismo por el cual se pueden identificar servicios web y mensajes de servicios web independientemente del protocolo de transporte utilizado. WS-Addressing define un espacio de nombres que se utiliza para identificar servicios web.
Gracias a esta especificación es posible hacer que las peticiones a servicios web puedan ser transmitidas a través de redes compuestas por nodos que realicen algún procesamiento sobre el mensaje, como firewalls, gateways, etc., de manera que la información de transporte sea independiente del protocolo utilizado para la transmisión del mensaje.
La especificación WS-Addressing define dos conceptos:
- Endpoint References, referencias de invocación, que identifican el punto donde deben ser dirigidas las peticiones.
- Message Information Headers, cabeceras específicas que contienen información relacionada con la identificación que caracteriza el mensaje.
Un identificador de punto de acceso al servicio web puede contener las siguientes propiedades:
[address, wsa:Address], una URI que identifica el punto de acceso. Este elemento es obligatorio
[reference properties, wsa:ReferenceProperties], propiedades individuales necesarias para identificar la entidad o recurso transportado. Las provee el creador del punto de acceso al servicio web.
[reference parameters, wsa:ReferenceParameters], parámetros que faciliten interacciones fruto del camino que recorre el mensaje. Las provee el punto de acceso al servicio web.
[selected port type, wsa:PortType]
[service-port, wsa:ServiceName]
[policy, wsp:Policy], políticas WS-Policy aplicables
Ejemplo:
<wsa:EndpointReference xmlns:wsa="..." xmlns:cotizaciones="..."> <wsa:Address>http://mi.dominio.com/cotizaciones</wsa:Address> <wsa:ReferenceProperties> <cotizaciones:NivelDeServicio>Premium</cotizaciones:NivelDeServicio> </wsa:ReferenceProperties> <wsa:ReferenceParameters> <cotizaciones:Empresa>SUN</cotizaciones:Empresa> </wsa:ReferenceParameters> </wsa:EndpointReference>
Provee la información que caracteriza el mensaje y que no se puede modificar a lo largo del transporte del mismo. Puede contener las siguientes propiedades:
[destination, wsa:To], una URI identificando el destino del mensaje.
[source endpoint, wsa:From], un EndpointReference del punto de acceso del emisor del mensaje.
[reply endpoint, wsa:ReplyTo], un EndpointReference que contenga el punto de acceso al que dirigir una respuesta. Si se espera respuesta del punto de acceso de destino del mensaje es obligatoria la presencia de esta propiedad.
[fault endpoint, wsa:FaultTo], un EndpointReference que contenga el punto de acceso al que dirigir los fallos provocados por el mensaje.
[action, wsa:Action], una URI que identifique el mensaje como un mensaje de entrada, salida o error en la WSDL del servicio web de destino.
[message id, wsa:MessageID], una URI que identifique unívocamente el mensaje. Si se espera una respuesta, esta propiedad es obligatoria.
[relationship, wsa:RelatesTo]
Ejemplo:
<S:Header> <wsa:MessageID> urn://tu.dominio.com/mensaje#123456 </wsa:MessageID> <wsa:ReplyTo> <wsa:Address>http://tu.dominio.com/clienteServicioCotizaciones</wsa:Address> </wsa:ReplyTo> <wsa:FaultTo> <wsa:Address>http://tu.dominio.com/clienteServicioCotizaciones/GestionErrores</wsa:Address> </wsa:FaultTo> <wsa:To>http://mi.dominio.com/ServicioCotizacion</wsa:To> <wsa:Action>http://mi.dominio.com/DameCotizacion</wsa:Action> </S:Header>