IBM Support

PI81569: INTRODUCE SWITCH FOR GETQUERYSTRING() TO RETURN ORIGINAL QUERY STRING IN FORWARDED SERVLET

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • WAS behaviour is compliance with servlet specification out of
    the box. This switch is facilitate migration of applications
    from few other application server that behaves differently.
    

Local fix

  • request.getAttribute("javax.servlet.forward,query_string") will
    return  same response
    

Problem summary

  • ****************************************************************
    * USERS AFFECTED:  IBM WebSphere Application Server            *
    *                  Traditional versions 8.5.5 and 9.0, and     *
    *                  Websphere Application Server Liberty users  *
    *                  of WebContainer.                            *
    ****************************************************************
    * PROBLEM DESCRIPTION: Invoking                                *
    *                      javax.servlet.HttpServletRequest.getQue *
    *                      ryString() returns null after           *
    *                      dispatching forward.                    *
    ****************************************************************
    * RECOMMENDATION:                                              *
    ****************************************************************
    If the path used when invoking
    javax.servlet.ServletRequest.getRequestDispatcher() does not
    contain a query string, HttpServletRequest.getQueryString()
    returns null even if the original request URI contained a
    query string.
    The following is an example of this scenario:
    A request submitted to "/ServletA?a=b" gets matched to
    ServletA:
    ServletA:
    ...
    request.getRequestDispatcher("/ServletB").forward();
    ...
    ServletB:
    ...
    String qs = request.getQueryString();
    ...
    The "qs" variable in ServletB will have a null value. This is
    correct according to the Servlet Specification. However, some
    pre-existing applications might expect a different behavior
    which might cause issues during migration.
    

Problem conclusion

  • The WebContainer has been modified to return the original
    query string when invoking HttpServletRequest.getQueryString()
    after dispatching if the path used to obtain the dispatcher
    does not contain a query string.
    
    A new WebContainer custom property needs to be set to true to
    enable this behavior.
    
    Name: com.ibm.ws.webcontainer.useOriginalQSInForwardIfNull
    values: true/false(default)
    
    After enabling the fix the "qs" variable in the example above
    will have the following value:
    
    "a=b"
    
    If the path used when invoking
    ServletRequest.getRequestDispatcher() contains a query string
    and this fix is enabled the "qs" variable will contain the new
    query string from the path used to obtain the dispatcher.
    
    
    Please refer to the following technote for instructions on
    enabling WebContainer custom properties:
    
    
    Full profile:
    http://www.ibm.com/support/docview.wss?rss=180&uid=swg21284395
    
    Liberty profile:
    http://www-01.ibm.com/support/docview.wss?uid=swg2159775
    
    
    The fix for this APAR is currently targeted for inclusion in
    fixpacks 8.5.5.13, 9.0.0.5 and 17.0.0.3. 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

    PI81569

  • Reported component name

    WEBSPHERE APP S

  • Reported component ID

    5724J0800

  • Reported release

    850

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2017-05-12

  • Closed date

    2017-09-18

  • Last modified date

    2017-09-18

  • 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

  • R850 PSY

       UP

  • R900 PSY

       UP

[{"Business Unit":{"code":"BU053","label":"Cloud \u0026 Data Platform"},"Product":{"code":"SSEQTP","label":"WebSphere Application Server"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"850","Line of Business":{"code":"LOB36","label":"IBM Automation"}}]

Document Information

Modified date:
18 October 2021