Enabling Web Services Addressing support for JAX-RPC applications

The Web Services Addressing (WS-Addressing) support provides mechanisms to address web services and provide addressing information in messages. To enable the WS-Addressing support for JAX-RPC applications, either configure the Web Services Description Language (WSDL) file for a service that runs on WebSphere® Application Server, or use the WS-Addressing application programming interface (API) or system programming interface (SPI) to add WS-Addressing properties in a WebSphere Application Server client.

About this task

Complete this task to enable the WS-Addressing support, either as a service provider or as a client of a service provided by another party. This task also describes how to disable the WS-Addressing support, which can improve performance for those applications that do not use WS-Addressing or any protocol that depends on the WS-Addressing support.

If you are creating a web service, you can enable the WS-Addressing support during development of the service, by including the UsingAddressing extensibility element in the WSDL binding element for the service. This element contains a required attribute that has a value of either false, which specifies that WS-Addressing information is accepted but not required in incoming messages, or true, which specifies that WS-Addressing information is required in incoming messages. The default value is false. Messages from WebSphere Application Server clients always include WS-Addressing information if your service WSDL file includes the UsingAddressing element, regardless of the value of the required attribute.

If you are creating a client application to use a service from another provider, you might not have access to the WSDL file for the service, or the service might use a version of WSDL that does not support the UsingAddressing element (if the service is not running on a current version of this product). However, you can still enable WS-Addressing support, during run time, by setting WS-Addressing properties on the JAX-RPC stub or call object that you use to communicate with the service.

The following table summarizes the behavior of the WS-Addressing support in each of the scenarios mentioned previously.
Table 1. The behavior of the WS-Addressing support in the product . The table details the resulting behavior of different UsingAddressing settings when an application server client sends a message.
  The WSDL for the service specifies UsingAddressing required = "false" The WSDL for the service specifies The WSDL for the service does not specify UsingAddressing
A client sends a message that contains WS-Addressing information The WS-Addressing information is processed by the product. The WS-Addressing information is processed by the product. The WS-Addressing information is processed by the product.
A non-WebSphere Application Server client sends a message that does not contain WS-Addressing information The message is accepted. The service returns a fault. The message is accepted.
A WebSphere Application Server client sends a message, without specifying addressing properties The message automatically contains the mandatory WS-Addressing information, as defined in the WS-Addressing specification. The information is processed by the product. The message automatically contains the mandatory WS-Addressing information, as defined in the WS-Addressing specification. The information is processed by the product. WS-Addressing information is not added. The message is accepted.

Procedure

  • To enable WS-Addressing support from the server by configuring the WSDL file, complete the following steps:
    1. Ensure that the WSDL file for the service contains the UsingAddressing extensibility element on the binding element.
      If you generated the WSDL file by using the Java2WSDL tool, this element is automatically added for you. If you created the WSDL file yourself, for use with the WSDL2Java tool, you must add the extensibility element. The UsingAddressing element has a required attribute with a default value of false.
      For example:
      <wsdl:binding name="TestServiceSoapBinding" type="intf:TestService">
           <wsaw:UsingAddressing wsdl:required="false" 
                                    xmlns:wsaw="https://www.w3.org/2006/05/addressing/wsdl"/>
      
           <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
      
           <wsdl:operation name="invokeInstance">
             ...
           </wsdl:operation>
      
        </wsdl:binding>
      This code indicates that the endpoint will process WS-Addressing information, but that this information is not required.
    2. Optional: To specify that WS-Addressing information is required, change the value of the required attribute to true.
      If the endpoint receives a message that does not contain the mandatory WS-Addressing elements within the message header, the endpoint returns a fault message, as defined in the WS-Addressing specification.

      WebSphere Application Server clients always send WS-Addressing conformant messages to endpoints with bindings that specify the UsingAddressing element.

  • To enable WS-Addressing support from a WebSphere Application Server client, use the IBM proprietary WS-Addressing API or SPI to associate one or more WS-Addressing properties with the JAX-RPC stub or call object that is used to send messages to the endpoint.

    These properties become message-addressing properties (MAPs) in the SOAP message header. If the node that receives the message is a WebSphere Application Server node, it processes the incoming MAPs in accordance with the WS-Addressing specification, even if the service does not have a UsingAddressing element in its WSDL file.

    Use this method when communicating with endpoints that use earlier versions of the WS-Addressing specification (for example: http://schemas.xmlsoap.org/ws/2004/08/addressing) that do not support the UsingAddressing element, or when the WSDL file for the target endpoint is not available to the client.

Results

WS-Addressing properties are now included in the SOAP message header, and are processed by the server on receipt of the message.