IBM Support

PM21151: A customer's JAX-WS handler causes high memory usage and slower performance when logging a message.

Fixes are available

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

  • A customer has a JAX-WS handler which logs the incoming or
    outgoing message.  The logging causes a higher than expected
    memory usage and slower than expected performance.
    
    The customer is migrating an application from JAX-RPC to
    JAX-WS and expects similar performance and memory usage.
    

Local fix

  • N/A
    

Problem summary

  • ****************************************************************
    * USERS AFFECTED:  Developers of JAX-WS Web services on the    *
    *                  IBM WebSphere Application Server            *
    ****************************************************************
    * PROBLEM DESCRIPTION: Customer experiences high memory and    *
    *                      poor performance when logging a         *
    *                      message in a JAX-WS handler.            *
    ****************************************************************
    * RECOMMENDATION:  Install a fix pack containing this APAR     *
    *                  and                                         *
    *                  use the "jaxws.message.accessor" property   *
    *                  described in the Problem Conclusion.        *
    ****************************************************************
    Customers use a JAX-WS application handler to query or modify
    the incoming or outgoing message.   Here are the two common
    use cases:
    1) A handler is used to query or modify SOAP header
    elements.
    2) A handler is used to log the incoming or outgoing
    message.
    Customers migrating an application from JAX-RPC will often use
    a JAX-WS SOAPHandler (jaxws.xml.ws.handler.soap.SOAPHandler)
    because it supports the same SAAJ data model as JAX-RPC.
    The SAAJ data model is the only SOAP-aware data model
    supported by the JAX-WS specification.  However there are some
    drawbacks to the SAAJ model:
    A) Accessing the message as an SAAJ SOAPMessage causes the
    entire XML message to be rendered as an SAAJ SOAPElement
    graph.  This transformation increases the memory footprint and
    processing time.
    B) After the handlers have completed, the message must be
    transformed back into the data rendering required for the
    target method.  For example, the SAAJ SOAPElement graph is
    converted into a JAXB bean.  This transformation also
    increases the memory footprint and processing time.
    IBM provides value-add, proprietary properties that can be used
    to access and query the SOAP header elements without using the
    SAAJ Model.  These properties were introduced by APARS PK96816
    and PK84170.
    The properties are described in the following blog:
    http://webspherewebservices.blogspot.com/2010/07/new-jax-ws-
    ligh
    tweight-api-allows-fast.html
    However, IBM does not provide a similar property to access the
    entire message as a String.  This deficiency hinders adoption
    and migration of JAX-RPC applications.  This APAR will be used
    to correct this deficiency.
    

Problem conclusion

  • A new property is added to the JAX-WS runtime which can be
    queried by a customer's hander to access the message as a
    String.
    
    The property is associated with the
    javax.xml.ws.handler.MessageContext object.
    Property Name: "jaxws.message.accessor"
    Property Value: null or Object
    
    The customer can call the toString() method on the
    returned object to access the message as a String.
    
    Here is an example usage:
    
    public myHandler implements SOAPHandler {
    ...
    public boolean handleMessage(MessageContext mc) {
    Object accessor = mc.get("jaxws.message.accessor");
    if (accessor != null) {
    msgText = accessor.toString();
    myLogger(msgText);
    }
    ..
    }
    }
    
    The fix for this APAR is currently targeted for inclusion in
    fix pack 7.0.0.15.  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

    PM21151

  • Reported component name

    WEBS APP SERV N

  • Reported component ID

    5724H8800

  • Reported release

    700

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2010-08-24

  • Closed date

    2010-09-10

  • Last modified date

    2012-10-08

  • 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

    WEBS APP SERV N

  • Fixed component ID

    5724H8800

Applicable component levels

  • R700 PSY

       UP

[{"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Product":{"code":"SSEQTP","label":"WebSphere Application Server"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"7.0","Line of Business":{"code":"LOB45","label":"Automation"}}]

Document Information

Modified date:
24 October 2021