IBM Support

PM38864: PROVIDE ABILITY TO SET A DEFAULT TIMEOUT VALUE FOR SQL STATEMENTS.

Fixes are available

8.0.0.1: WebSphere Application Server V8.0 Fix Pack 1
7.0.0.21: WebSphere Application Server V7.0 Fix Pack 21
8.0.0.2: WebSphere Application Server V8.0 Fix Pack 2
8.0.0.3: WebSphere Application Server V8.0 Fix Pack 3
7.0.0.23: WebSphere Application Server V7.0 Fix Pack 23
8.0.0.4: WebSphere Application Server V8.0 Fix Pack 4
7.0.0.25: WebSphere Application Server V7.0 Fix Pack 25
8.0.0.5: WebSphere Application Server V8.0 Fix Pack 5
7.0.0.27: WebSphere Application Server V7.0 Fix Pack 27
8.0.0.6: WebSphere Application Server V8.0 Fix Pack 6
7.0.0.29: WebSphere Application Server V7.0 Fix Pack 29
8.0.0.7: WebSphere Application Server V8.0 Fix Pack 7
8.0.0.8: WebSphere Application Server V8.0 Fix Pack 8
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
8.0.0.9: WebSphere Application Server V8.0 Fix Pack 9
7.0.0.35: WebSphere Application Server V7.0 Fix Pack 35
8.0.0.10: WebSphere Application Server V8.0 Fix Pack 10
7.0.0.37: WebSphere Application Server V7.0 Fix Pack 37
8.0.0.11: WebSphere Application Server V8.0 Fix Pack 11
7.0.0.39: WebSphere Application Server V7.0 Fix Pack 39
8.0.0.12: WebSphere Application Server V8.0 Fix Pack 12
7.0.0.41: WebSphere Application Server V7.0 Fix Pack 41
8.0.0.13: WebSphere Application Server V8.0 Fix Pack 13
7.0.0.43: WebSphere Application Server V7.0 Fix Pack 43
8.0.0.14: WebSphere Application Server V8.0 Fix Pack 14
7.0.0.45: WebSphere Application Server V7.0 Fix Pack 45
8.0.0.15: WebSphere Application Server V8.0 Fix Pack 15
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 new function.

Error description

  • Provide a means to configure an application with an SQL
    statement query timeout value for JDBC drivers which support it.
    

Local fix

Problem summary

  • ****************************************************************
    * USERS AFFECTED:  All users of IBM WebSphere Application      *
    *                  Server V7.0 and V8.0                        *
    ****************************************************************
    * PROBLEM DESCRIPTION: There is no means to configure an       *
    *                      application with a SQL statement query  *
    *                      timeout value for JDBC drivers          *
    *                      which support it.                       *
    ****************************************************************
    * RECOMMENDATION:                                              *
    ****************************************************************
    The java.sql.Statement.setQueryTimeout interface can be used
    to limit the number of seconds that a JDBC driver will wait
    for a statement to run.  This can used by an application to
    control the maximum amount of time it will wait for an SQL
    statement to complete before the request is interrupted.
    Prior to the installation of this APAR, you had to
    programmatically establish an SQL query timeout in your
    application by invoking the java.sql.Statement.setQueryTimeout
    interface on every statement for which the timeout behavior
    was desired.   After the installation of this APAR, WebSphere
    Application Server can automatically establish default query
    timeouts for SQL statements.
    

Problem conclusion

  • This feature is configured on a per-datasource basis, via the
    following datasource custom properties,
    
    webSphereDefaultQueryTimeout - establishes a default query
    timeout, which is the number of seconds (0 means infinite, or
    no timeout) that an SQL statement may run before timing out.
    This default value is overridden during a JTA transaction if
    custom property
    syncQueryTimeoutWithTransactionTimeout is enabled.
    
    syncQueryTimeoutWithTransactionTimeout - uses the time
    remaining (if any) in a JTA transaction as the default query
    timeout for SQL statements.
    
    After creating a new Application Server or Management profile,
    these settings show up in the datasource custom properties of
    datasources created in the new profile.  (The feature is
    limited by the extent to which the JDBC driver and database
    support the query timeout capability.)  If using an existing
    profile, the settings are still supported, but must be added
    manually.  The following steps may be used to add and
    configure the settings manually via the Integrated Solutions
    Console,
    
    From the Datasources panel, select the datasource to be
    configured.
    Select Custom properties under Additional Properties.
    Select New.
    For the name, enter webSphereDefaultQueryTimeout
    For the value, enter the number of seconds to use for the
    default query timeout.
    Select Ok.
    Select New.
    For the name, enter syncQueryTimeoutWithTransactionTimeout
    For the value, enter a value of true or false, indicating
    whether or not the use the time remaining in a JTA transaction
    as the default query timeout.
    Select Ok.
    Save your changes.  The updates will go into effect after
    restarting the server.
    
    The default query timeout value is computed immediately before
    executing each statement.  For example, below is a code
    snippet of an application demonstrating a scenario using
    webSphereDefaultQueryTimeout = 20 and
    syncQueryTimeoutWithTransactionTimeout = true,
    
    statement = connection.createStatement();
    statement.executeUpdate(sqlcommand1); // query timeout of 20
    seconds is used
    statement.executeUpdate(sqlcommand2); // query timeout of 20
    seconds is used
    transaction.setTransactionTimeout(30);
    transaction.begin();
    try
    {
    statement.executeUpdate(sqlcommand3); // query timeout of
    30 seconds is used
    // assume the above operation took 5 seconds, remaining
    time = 30 - 5 seconds
    statement.executeUpdate(sqlcommand4); // query timeout of
    25 seconds is used
    // assume the above operation took 10 seconds, , remaining
    time = 25 - 10 seconds
    statement.executeUpdate(sqlcommand5); // query timeout of
    15 seconds is used
    }
    finally
    {
    transaction.commit();
    }
    statement.executeUpdate(sqlcommand6); // query timeout of 20
    seconds is used
    
    Here is the same scenario using webSphereDefaultQueryTimeout =
    20 and syncQueryTimeoutWithTransactionTimeout = false,
    
    statement = connection.createStatement();
    statement.executeUpdate(sqlcommand1); // query timeout of 20
    seconds is used
    statement.executeUpdate(sqlcommand2); // query timeout of 20
    seconds is used
    transaction.setTransactionTimeout(30);
    transaction.begin();
    try
    {
    statement.executeUpdate(sqlcommand3); // query timeout of
    20 seconds is used
    // assume the above operation took 5 seconds
    statement.executeUpdate(sqlcommand4); // query timeout of
    20 seconds is used
    // assume the above operation took 10 seconds
    statement.executeUpdate(sqlcommand5); // query timeout of
    20 seconds is used
    }
    finally
    {
    transaction.commit();
    }
    statement.executeUpdate(sqlcommand6); // query timeout of 20
    seconds is used
    
    You may override the query timeout for a statement at any time
    by invoking the java.sql.Statement.setQueryTimeout interface
    from your application code.
    
    The fix for this APAR is currently targeted for inclusion in
    fix packs 7.0.0.21 and 8.0.0.1.  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

    PM38864

  • 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

    2011-05-10

  • Closed date

    2011-08-15

  • Last modified date

    2011-12-13

  • 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

  • R800 PSY

       UP



Document information

More support for: WebSphere Application Server
General

Software version: 7.0

Reference #: PM38864

Modified date: 13 December 2011