Anotaciones de direccionamiento de servicios web
La especificación WS-Addressing proporciona mecanismos neutrales de transporte para direccionar servicios web y para facilitar el direccionamiento entre de inicio a fin. Si tiene una aplicación JAX-WS, puede utilizar anotaciones Java en su código para especificar el comportamiento WS-Addressing en tiempo de ejecución.
Puede utilizar las anotaciones de WS-Addressing para habilitar el soporte de WS-Addressing, para especificar si la información de WS-Addressing es necesaria en los mensajes de entrada, para controlar el patrón de intercambio de mensajes que admite el servicio y para especificar las acciones que se deben asociar con una operación del servicio web o de respuesta de error.
- javax.xml.ws.Action
- Especifica la acción que se asocia a una operación de servicio web.
- Si sigue un enfoque ascendente para desarrollar servicios web JAX-WS, puede generar un documento WSDL a partir del código de aplicación Java utilizando la herramienta de línea de mandatos wsgen. Sin embargo, para que este atributo se añada a la operación WSDL, también debe especificar la anotación @Addressing en la clase de implementación. El resultado en el documento WSDL generado es que las anotaciones Action tendrán el atributo wsam:Action en los elementos input message y output message de wsdl:operation. De forma alternativa, si no desea utilizar la anotación @Addressing, puede proporcionar su propio documento WSDL con el atributo Action ya definido.
- Si sigue un enfoque descendente para desarrollar servicios web JAX-WS, puede generar el código de aplicación Java a partir de un documento WSDL existente utilizando la herramienta de línea de mandatos wsimport. En tales casos, el código Java resultante contendrá las anotaciones Action y FaultAction correctas.
- Si esta acción no se especifica en las anotaciones de código o en el documento WSDL, se utiliza el patrón de acción predeterminado definido en la Especificación de metadatos de Web Services Addressing 1.0. Consulte esta especificación para obtener toda la información detallada.Nota: Aunque el entorno de ejecución de WebSphere Application Server da soporte al atributo wsaw:Action en desuso, si intenta generar código Java a partir de un documento WSDL antiguo que contiene el atributo wsaw:Action en desuso, este atributo se ignorará.
- javax.xml.ws.FaultAction
- Especifica la acción que se añade a una respuesta de error. Si utiliza esta anotación con un método concreto, el atributo de ampliación FaultAction de WS-Addressing se añadirá al elemento erróneo de la operación WSDL que corresponde a dicho método. Para que este atributo se añada a la operación WSDL, también debe especificar la anotación de direccionamiento en la clase de implementación. Si no quiere utilizar la anotación de direccionamiento, puede proporcionar su propio documento WSDL con el atributo Action ya definido. Esta anotación debe estar dentro de una anotación Action.
- Los documentos WSDL generados a partir del código de aplicación Java que contienen la anotación FaultAction de WS-Addressing tendrán el atributo wsam:Action en el elemento fault message de wsdl:operation.Nota: Para asegurarse de que todas las clases Exception personalizadas que escriba se correlacionarán satisfactoriamente con el documento WSDL generado, amplíe la clase java.lang.Exception en lugar de la clase java.lang.RuntimeException.
- javax.xml.ws.soap.Addressing
- Especifica que este servicio es para habilitar el soporte de WS-Addressing. Puede utilizar esta anotación sólo en el bean de implementación de servicio; no puede utilizarla en la interfaz de punto final de servicio.
- com.ibm.websphere.wsaddressing.jaxws21.SubmissionAddressing
- Esta anotación forma parte de la implementación de IBM de la especificación JAX-WS. Esta anotación especifica que este servicio es para habilitar el soporte WS-Addressing para la especificación 2004/08 WS-Addressing. Puede utilizar esta anotación sólo en el bean de implementación de servicio; no puede utilizarla en la interfaz de punto final de servicio.
Para obtener más información sobre las anotaciones Addressing y SubmissionAddressing, incluidos los ejemplos de código, consulte Habilitación de soporte de direccionamiento de servicios web para aplicaciones JAX-WS utilizando las anotaciones de direccionamiento.
@WebService(name = "Calculator")
public interface Calculator {
...
@Action(
input="http://calculator.com/inputAction",
output="http://calculator.com/outputAction",
fault = { @FaultAction(className=AddNumbersException.class,
value="http://calculator.com/faultAction")
}
)
public int add(int value1, int value2) throws AddNumbersException {
return value1 + value2;
}
}
Si utiliza una herramienta para generar artefactos de servicio a partir de código,
los códigos WSDL que se generan del ejemplo anterior son los siguientes:<definitions targetNamespace="http://example.com/numbers" ...>
...
<portType name="AddPortType">
<operation name="Add">
<input message="tns:AddInput" name="Parameters"
wsam:Action="http://calculator.com/inputAction"/>
<output message="tns:AddOutput" name="Result"
wsam:Action="http://calculator.com/outputAction"/>
<fault message="tns:AddNumbersException" name="AddNumbersException"
wsam:Action="http://calculator.com/faultAction"/>
</operation>
<portType>
...
<definitions>