IBM Support

PM16015: ENABLE A JAX-WS WEB SERVICE PROVIDER TO BEHAVE LIKE A ONE-WAY OPERATION WHEN THE PROVIDER RETURNS NULL

Fixes are available

7.0.0.13: WebSphere Application Server V7.0 Fix Pack 13 for AIX
7.0.0.13: WebSphere Application Server V7.0 Fix Pack 13 for HP-UX
7.0.0.13: WebSphere Application Server V7.0 Fix Pack 13 for IBM i
7.0.0.13: WebSphere Application Server V7.0 Fix Pack 13 for Linux
7.0.0.13: WebSphere Application Server V7.0 Fix Pack 13 for Solaris
7.0.0.13: WebSphere Application Server V7.0 Fix Pack 13 for Windows
7.0.0.13: Java SDK 1.6 SR8FP1 Cumulative Fix for WebSphere Application Server
7.0.0.15: WebSphere Application Server V7.0 Fix Pack 15 for AIX
7.0.0.15: Java SDK 1.6 SR9 Cumulative Fix for WebSphere Application Server
7.0.0.15: WebSphere Application Server V7.0 Fix Pack 15 for HP-UX
7.0.0.15: WebSphere Application Server V7.0 Fix Pack 15 for IBM i
7.0.0.15: WebSphere Application Server V7.0 Fix Pack 15 for Linux
7.0.0.15: WebSphere Application Server V7.0 Fix Pack 15 for Solaris
7.0.0.15: WebSphere Application Server V7.0 Fix Pack 15 for Windows
7.0.0.17: WebSphere Application Server V7.0 Fix Pack 17
7.0.0.17: Java SDK 1.6 SR9 FP1 Cumulative Fix for WebSphere Application Server
7.0.0.19: WebSphere Application Server V7.0 Fix Pack 19
7.0.0.21: WebSphere Application Server V7.0 Fix Pack 21
7.0.0.23: WebSphere Application Server V7.0 Fix Pack 23
7.0.0.25: WebSphere Application Server V7.0 Fix Pack 25
7.0.0.27: WebSphere Application Server V7.0 Fix Pack 27
7.0.0.29: WebSphere Application Server V7.0 Fix Pack 29
7.0.0.31: WebSphere Application Server V7.0 Fix Pack 31
7.0.0.27: Java SDK 1.6 SR13 FP2 Cumulative Fix for WebSphere Application Server
7.0.0.33: WebSphere Application Server V7.0 Fix Pack 33
7.0.0.35: WebSphere Application Server V7.0 Fix Pack 35
7.0.0.37: WebSphere Application Server V7.0 Fix Pack 37
7.0.0.39: WebSphere Application Server V7.0 Fix Pack 39
7.0.0.41: WebSphere Application Server V7.0 Fix Pack 41
7.0.0.43: WebSphere Application Server V7.0 Fix Pack 43
7.0.0.45: WebSphere Application Server V7.0 Fix Pack 45
7.0.0.19: Java SDK 1.6 SR9 FP2 Cumulative Fix for WebSphere Application Server
7.0.0.21: Java SDK 1.6 SR9 FP2 Cumulative Fix for WebSphere
7.0.0.23: Java SDK 1.6 SR10 FP1 Cumulative Fix for WebSphere
7.0.0.25: Java SDK 1.6 SR11 Cumulative Fix for WebSphere Application Server
7.0.0.27: Java SDK 1.6 SR12 Cumulative Fix for WebSphere Application Server
7.0.0.29: Java SDK 1.6 SR13 FP2 Cumulative Fix for WebSphere Application Server
7.0.0.45: Java SDK 1.6 SR16 FP60 Cumulative Fix for WebSphere Application Server
7.0.0.31: Java SDK 1.6 SR15 Cumulative Fix for WebSphere Application Server
7.0.0.35: Java SDK 1.6 SR16 FP1 Cumulative Fix for WebSphere Application Server
7.0.0.37: Java SDK 1.6 SR16 FP3 Cumulative Fix for WebSphere Application Server
7.0.0.39: Java SDK 1.6 SR16 FP7 Cumulative Fix for WebSphere Application Server
7.0.0.41: Java SDK 1.6 SR16 FP20 Cumulative Fix for WebSphere Application Server
7.0.0.43: Java SDK 1.6 SR16 FP41 Cumulative Fix for WebSphere Application Server

Subscribe

You can track all active APARs for this component.

APAR status

  • Closed as program error.

Error description

  • The default behavior of a JAX-WS web service Provider which
    does not specify a wsdl file is to always return a response.
    In the case where the Provider returns null, the response
    consists of a SOAPEnvelope which contains a SOAPBody that is
    empty.
    
    Presently, the only way for a Provider to mimic a one-way
    (also known as request only) web service operation is to
    specify the operation in WSDL as request only, and to make the
    WSDL available to the Provider in the @WebServiceProvider
    annotation.
    
    If the operation can not be defined in WSDL, there is
    presently no way to make the SOAP response match that of a
    one-way web service response, which is just an HTTP
    acknowledgement.
    
    For example, in the invocation of Provider<T>.invoke(),
    
    @WebServiceProvider
    public class HelloProvider implements Provider<Source> {
    @Override
    public Source invoke(Source req) {
    return null;
    }
    }
    
    the SOAP response returned is
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.
    org/soap/envelope/">
    <soapenv:Body/>
    </soapenv:Envelope>
    

Local fix

  • Convert to a true one way service vs. expecting the SOAP
    response when the return statement is return null to send a null
    SOAP envelope.
    

Problem summary

  • ****************************************************************
    * USERS AFFECTED:  Developers and administrators of JAX-WS     *
    *                  Web service Providers for IBM WebSphere     *
    *                  Application Server V7.0.                    *
    ****************************************************************
    * PROBLEM DESCRIPTION: Enable a JAX-WS Web service Provider    *
    *                      without WSDL to behave like a           *
    *                      one-way operation when the              *
    *                      Provider returns null.                  *
    ****************************************************************
    * RECOMMENDATION:  Install a fixpack containing this APAR.     *
    ****************************************************************
    The default behavior of a JAX-WS web service Provider which
    does not specify a WSDL file is to always return a response.
    In the case where the Provider returns null, the response
    consists of a SOAPEnvelope which contains a SOAPBody that is
    empty.
    
    The JAX-WS 2.2 specification, section 5.1.1, states that when
    a Provider invoke method returns null, it is considered that no
    response needs to be sent by the service.
    
    Currently in the JAX-WS runtime there is no way for a Provider
    which does not specify a WSDL file to act like a one-way
    operation (that is, an operation that does not return a SOAP
    response, but instead responds with an HTTP acknowledgment).
    
    The following is an example of a Provider which returns
    null and does not have a WSDL file:
    
    @WebServiceProvider
    public class HelloProvider implements Provider<Source> {
    @Override
    public Source invoke(Source req) {
    return null;
    }
    }
    
    The invocation of Provider<T>.invoke()produces the following
    SOAP response:
    
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.
    org/soap/envelope/">
    <soapenv:Body/>
    </soapenv:Envelope>
    
    The desired behavior is for the invocation to return no SOAP
    response.
    
    Note that a Provider can be made to behave as a one-way
    operation if the operation is defined in WSDL as one-way (that
    is, an operation which has an input message but produces no
    output) and the WSDL is made available to the Provider in the
    @WebServiceProvider annotation.
    

Problem conclusion

  • A new JVM custom property is introduced to enable JAX-WS web
    service Providers without WSDL which return null to behave
    like one-way operations and not return a SOAP response.
    
    The JVM property name is
    "jaxws.provider.interpretNullAsOneway"
    
    The value is "true" or "false".
    
    The default value is "false".
    
    When the property is set to true, the JAX-WS runtime
    will detect a null return from a Provider which does not
    specify WSDL and it will not generate a SOAP response.  Instead
    an HTTP acknowldegement will be returned, just as is the case
    for a one-way operation.
    
    Note that the client invoking such a Provider must use a
    one-way invocation pattern, for example:
    
    dispatch.invokeOneWay(requestSource);
    
    Note that if the operation is defined in WSDL as
    two-way the runtime will continue to send a response
    consisting of a SOAPEnvelope containing an empty SOAPBody,
    regardless of the property setting.
    
    The fix for this APAR is currently targeted for inclusion in
    fix pack 7.0.0.13.  Please refer to the Recommended Updates
    page for delivery information:
    http://www.ibm.com/support/docview.wss?rs=180&uid=swg27004980
    

Temporary fix

Comments

APAR Information

  • APAR number

    PM16015

  • Reported component name

    WEBSPHERE APP S

  • Reported component ID

    5724J0800

  • Reported release

    700

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2010-06-07

  • Closed date

    2010-07-15

  • Last modified date

    2010-07-15

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

Fix information

  • Fixed component name

    WEBSPHERE APP S

  • Fixed component ID

    5724J0800

Applicable component levels

  • R700 PSY

       UP



Document information

More support for: WebSphere Application Server
General

Software version: 7.0

Reference #: PM16015

Modified date: 15 July 2010