IBM Support

IT22694: MQ Java client memory leak when using HTTP URLs for Client Channel Definition Tables (CCDTs)


You can track all active APARs for this component.


APAR status

  • Closed as program error.

Error description

  • An IBM MQ classes for JMS or classes for Java application,
    configured to use a client channel definition table (CCDT)
    referenced using a non-file protocol URL such as http or ftp,
    creates and disconnects connections repeatedly.  After enough
    repetitions a java.lang.OutOfMemory error occurs reporting an
    exhaustion of Java heap memory.
    When using a file URL, the same application that creates and
    closes connections repeatedly does not result in a
    java.lang.OutOfMemory error being thrown by the JVM.

Local fix

  • Use a client channel definition table (CCDT) on a file system
    local to where the application is running such that the file
    protocol can be used in the URL referencing the CCDT.

Problem summary

  • ****************************************************************
    This issue affects users of the:
      - IBM MQ classes for JMS
      - IBM MQ classes for Java
      - IBM MQ JCA Resource Adapter
      - WebSphere Application Server MQ messaging provider
    with applications that create and close multiple connections
    during its lifetime using a client channel definition table
    (CCDT) that is stored on a different system from the one on
    which the application is running.
    Platforms affected:
    When an application requested a new connection using a client
    channel definition table (CCDT) that was stored on a different
    system from the one on which the application was running, the
    CCDT would be read and parsed for each connection request.  This
    was because the parsed contents of the CCDT were only cached if
    the CCDT file is local to the application and referenced using
    the "file" protocol in a URL, for example:
  chanTab1 = new
    where "factory" is an MQConnectionFactory object.
    Each time the CCDT was read, a new internal CCDT object was
    created to represent the CCDT file.  The channel definitions
    that were parsed from the CCDT were then stored within a
    java.util.HashMap keyed against the CCDT object created.
    The CCDT object created for each read of the CCDT file would not
    be equal to any previously created CCDT objects.  As such, when
    the channel definitions from the CCDT were added to the
    java.util.HashMap using the CCDT object, it did not replace the
    previous cached entry with the newly parsed channel definitions
    and the size of the java.util.HashMap grew.
    The old CCDT and channel definition references were not then
    removed from the java.util.HashMap cache.
    This processing occurred within the Java MQI layer.

Problem conclusion

  • The Java MQI has been updated such that if a client channel
    definition table (CCDT) is parsed multiple times, any previously
    cached references to the CCDT or the channel definitions it
    contained, are removed from the relevant internal
    java.util.HashMap collections.
    The fix is targeted for delivery in the following PTFs:
    Version    Maintenance Level
    v9.0 CD    9.0.5
    v9.0 LTS
    The latest available maintenance can be obtained from
    'WebSphere MQ Recommended Fixes'
    If the maintenance level is not yet available information on
    its planned availability can be found in 'WebSphere MQ
    Planned Maintenance Release Dates'

Temporary fix


APAR Information

  • APAR number


  • Reported component name


  • Reported component ID


  • Reported release


  • Status


  • PE




  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date


  • Closed date


  • Last modified date


  • 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


  • Fixed component ID


Applicable component levels

  • R903 PSY


[{"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSYHRD","label":"IBM MQ"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"9.0","Line of Business":{"code":"LOB45","label":"Automation"}}]

Document Information

Modified date:
21 November 2021