IBM Support

IT45625: JMQI does not replace unmappable characters in the message body when indicated to do so.

Subscribe to this APAR

By subscribing, you receive periodic emails alerting you to the status of the APAR, along with a link to the fix after it becomes available. You can track this item individually or track all items by product.

Notify me when this APAR changes.

Notify me when an APAR for this component changes.

 

APAR status

  • Closed as program error.

Error description

  • When an MQ Classes for Java or MQ Classes for JMS (JMQI)
    application receives a message body encoded in one CCSID but a
    different CCSID is defined in the message header (malformed),
    and the unmappable character system properties are set, the
    message is not decoded as expected.
    

Local fix

Problem summary

  • ****************************************************************
    USERS AFFECTED:
    Users of JMQI reliant applications (MQ Classes for Java and MQ
    Classes for JMS) which are processing malformed messages with
    the following JVM system properties defined.
    
    -Dcom.ibm.mq.cfg.jmqi.UnmappableCharacterAction=REPLACE
    -Dcom.ibm.mq.cfg.jmqi.UnmappableCharacterReplacement=<Base-10
    character>
    
    Further details of these system properties can be found in the
    official documentation -
    https://www.ibm.com/docs/en/ibm-mq/latest?topic=messaging-charac
    ter-string-conversions-in-mq-classes-jms
    
    
    Platforms affected:
    MultiPlatform
    
    ****************************************************************
    PROBLEM DESCRIPTION:
    When an MQ Classes for Java or MQ Classes for JMS (JMQI)
    application receives a message body encoded in one CCSID, but a
    different CCSID is defined in the message header (malformed),
    then the message body is not decoded as expected, regardless of
    whether the following JVM system properties are set.
    
    -Dcom.ibm.mq.cfg.jmqi.UnmappableCharacterAction=REPLACE
    -Dcom.ibm.mq.cfg.jmqi.UnmappableCharacterReplacement=<Base-10
    character>
    
    ----
    
    For the below explanation accept that, at the time of this APAR
    being published, CCSID 819 is synonymous with ISO-8859-1 and
    CCSID 1208 is synonymous with UTF-8 encoding. Note these
    specific CCSID's are used here for example only - this APAR can
    apply to any combination of supported CCSIDs.
    
    Consider the following scenario when processing a malformed
    message with the following JVM system properties explicitly set.
    
    -Dcom.ibm.mq.cfg.jmqi.UnmappableCharacterAction=REPLACE
    -Dcom.ibm.mq.cfg.jmqi.UnmappableCharacterReplacement=63
    
    1) A message is received (MQGET) with the body encoded in CCSID
    819, containing the byte 0xE9 (for example), and the message
    headers specify CCSID 1208.
    2) The JMQI will attempt to decode 0xE9 into the "question mark"
    character (63 in base-10, 0x3F in base-16) since it is outside
    the supported encoding of CCSID 1208.
    3) The JMQI will now erroneously (since the JVM system
    properties are set) replace 0xE9 with 0xEFBFBD (not 0x3F), which
    is the CCSID 1208 default replacement character.
    
    The JMQI did not honour the values defined in the JVM system
    properties and therefore failed to replace the unsupported
    characters in the manner expected by the user of the
    application.
    

Problem conclusion

  • The JMQI will now correctly honour the following JVM system
    property values when processing a malformed message.
    
    -Dcom.ibm.mq.cfg.jmqi.UnmappableCharacterAction=REPLACE
    -Dcom.ibm.mq.cfg.jmqi.UnmappableCharacterReplacement=<Base-10
    character>
    
    Please note that the behaviour of processing malformed messages
    is in itself not recommended and, where possible, efforts should
    be made to correct this.
    
    ---------------------------------------------------------------
    The fix is targeted for delivery in the following PTFs:
    
    Version    Maintenance Level
    v9.2 LTS   9.2.0.30
    v9.3 LTS   9.3.0.20
    v9.4 LTS   9.4.0.0
    
    The latest available maintenance can be obtained from
    'IBM MQ Recommended Fixes'
    https://www.ibm.com/support/pages/recommended-fixes-ibm-mq
    
    If the maintenance level is not yet available information on
    its planned availability can be found in 'IBM MQ
    Planned Maintenance Release Dates'
    https://ibm.biz/mqplannedmaintenance
    
    ---------------------------------------------------------------
    

Temporary fix

Comments

APAR Information

  • APAR number

    IT45625

  • Reported component name

    MQ BASE V9.2

  • Reported component ID

    5724H7281

  • Reported release

    920

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2024-03-01

  • Closed date

    2024-04-24

  • Last modified date

    2024-05-14

  • 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

    MQ BASE V9.2

  • Fixed component ID

    5724H7281

Applicable component levels

[{"Business Unit":{"code":"BU048","label":"IBM Software"},"Product":{"code":"SSYHRD","label":"IBM MQ"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"920","Line of Business":{"code":"LOB67","label":"IT Automation \u0026 App Modernization"}}]

Document Information

Modified date:
14 May 2024