IBM Support

IV08982: SENDING JMS MESSAGES WITH DATA ENCODED IN CCSID 1200 TO A QUEUE MANAGER, A 'BYTE ORDER MARK' IS ADDED TO THE MESSAGE DATA

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • When testing with message data encoded in various CCSIDs, it
    was discovered that when using CCSID 1200 the 'byte order mark'
    (BOM) is included in the message. This might cause trouble for
    the backend modules that are trying to read the messages.
    
    Part the message showing CCSID and BOM:
    
    Queue Manager    : MYQM
    :
    Queue            : MY.SAMPLE.TEST.QUEUE
    :
    Encoding         : 000000785
    CodedCharSetId   : 000001047
    UserIdentifier   : `USERID
    PutApplType      : 000000002
    PutApplName      : `RRSBATCH
    Message Buffer :      762 byte(s)
    00: D9C6C840 00000002 000000FC 00000111  `RFH ............`
    10: 000004B0 D4D8E2E3 D9404040 00000000  `....MQSTR   ....`
    ---
    1200 CCSID
    ...
    F0: 7970653E 3C2F7573 723E2020 FEFF0020
    .                              ----
    BOM
    

Local fix

Problem summary

  • ****************************************************************
    USERS AFFECTED:
    This issue affects users of:
    
    - The WebSphere MQ V7 classes for JMS.
    - The WebSphere MQ V7 Resource Adapter.
    - The WebSphere Application Server V7 WebSphere MQ messaging
      provider.
    - The WebSphere Application Server V8 WebSphere MQ messaging
      provider.
    - The WebSphere Application Server V6.1 WebSphere MQ messaging
      provider who have configured the WebSphere variable
      MQ_INSTALL_ROOT to point to a WebSphere MQ V7 installation.
    
    who have applications which construct JMS TextMessages
    containing String data encoded using Coded Character Set
    Identifier (CCSID) 1200, and then send that message using one
    of the following methods:
    
    * MessageProducer.send(Destination, Message)
    * MessageProducer.send(Destination, Message, int, int, long)
    * MessageProducer.send(Message)
    * MessageProducer.send(Message, int, int, long)
    * QueueSender.send(Message)
    * QueueSender.send(Message, int, int, long)
    * QueueSender.send(Queue, Message)
    * QueueSender.send(Queue, Message, int, int, long)
    
    Platforms affected:
    All Distributed (iSeries, all Unix and Windows) +Java +Java zOS
    ****************************************************************
    PROBLEM SUMMARY:
    The WebSphere MQ V7 classes for JMS and Resource Adapter map
    Coded Character Set Identifier 1200 to Java character
    set 'UnicodeBig'.
    
    When the WebSphere MQ classes for JMS and Resource Adapter are
    used to send a message that contains String data, they will
    convert any String data in the message body from Unicode into a
    series of bytes, depending upon the Coded Character Set
    Identifier specified in the message. This conversion is
    performed using routines provided by the Java Runtime
    Environment.
    
    When the WebSphere MQ V7 classes for JMS and Resource Adapter
    were used to send a message containing String data encoded in
    Coded Character Set Identifier 1200, the String data was
    converted from Unicode into a set of bytes using the
    Java character set UnicodeBig. This Java character set is
    defined as "unmarked", which meant that the Java Runtime
    Environment returned a set of bytes representing the message
    data, and added a Byte Order Mark to the front, indicating if
    the data was big-endian or little-endian.
    

Problem conclusion

  • The WebSphere MQ V7 classes for JMS and Resource Adapter have
    been updated to allow users to override the default mapping for
    Coded Character Set Identifier 1200, and map this Coded
    Character Set Identifier to Java character set
    UnicodeBigUnmarked. This allows the WebSphere MQ V7 classes for
    JMS and Resource Adapter to send messages containing String
    data encoded in Coded Character Set Identifier 1200 without
    including a Byte Order Mark at the start of the message body.
    
    The property name that allows this mapping to take place
    is:
    
        CCSID.MapCCSID1200ToUnicodeBigUnmarked
    
    and the property needs to have the value:
    
        YES
    
    There are three different ways to set the property:
    
    - Run the Java application with the following Java system
      property argument:
    
      -Dcom.ibm.mq.cfg.CCSID.MapCCSID1200ToUnicodeBigUnmarked=YES
    
    For example, to start a Java application called myJavaApp
    with this property set, run the command (all one one line):
    
     java
       -Dcom.ibm.mq.cfg.CCSID.MapCCSID1200ToUnicodeBigUnmarked=YES
       myJavaApp
    
    
    - Set the system environment variable:
    
      CCSID.MAPCCSID1200TOUNICODEBIGUNMARKED=YES
    
    prior to starting the Java application.
    
    
    - Add the following stanza to the WebSphere MQ client
      configuration file, mqclient.ini, that is being used by the
      Java application:
    
      CCSID:
      MapCCSID1200ToUnicodeBigUnmarked=YES
    
      For more information about using a WebSphere MQ client
      configuration file, please refer to the "WebSphere MQ client
      configuration file" section of the WebSphere MQ V7
      Information Center:
    
      http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/index.jsp
    ?topic=/com.ibm.mq.csqzaf.doc/cs13350_.htm
    
    ---------------------------------------------------------------
    The fix is targeted for delivery in the following PTFs:
    
                       v7.0
    Platform           Fix Pack 7.0.1.8
    --------           --------------------
    Windows            U200335
    AIX                U845856
    HP-UX (PA-RISC)    U847965
    HP-UX (Itanium)    U847970
    Solaris (SPARC)    U847966
    Solaris (x86-64)   U847972
    iSeries            7.0.1.8
    Linux (x86)        U847967
    Linux (x86-64)     U847971
    Linux (zSeries)    U847968
    Linux (Power)      U847969
    zOS                7.0.1.8
    
                       v7.1
    Platform           Fix Pack 7.1.0.1
    --------           --------------------
    Windows            7.1.0.1
    AIX                7.1.0.1
    HP-UX (PA-RISC)    7.1.0.1
    HP-UX (Itanium)    7.1.0.1
    Solaris (SPARC)    7.1.0.1
    Solaris (x86-64)   7.1.0.1
    iSeries            7.1.0.1
    Linux (x86)        7.1.0.1
    Linux (x86-64)     7.1.0.1
    Linux (zSeries)    7.1.0.1
    Linux (Power)      7.1.0.1
    zOS                7.1.0.1
    
    The latest available maintenance can be obtained from
    'WebSphere MQ Recommended Fixes'
    http://www-1.ibm.com/support/docview.wss?rs=171&uid=swg27006037
    
    If the maintenance level is not yet available information on
    its planned availability can be found in 'WebSphere MQ
    Planned Maintenance Release Dates'
    http://www-1.ibm.com/support/docview.wss?rs=171&uid=swg27006309
    ---------------------------------------------------------------
    

Temporary fix

Comments

APAR Information

  • APAR number

    IV08982

  • Reported component name

    WMQ AIX V7

  • Reported component ID

    5724H7221

  • Reported release

    701

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2011-10-10

  • Closed date

    2011-11-01

  • Last modified date

    2012-01-16

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

    PM50628

Fix information

  • Fixed component name

    WMQ AIX V7

  • Fixed component ID

    5724H7221

Applicable component levels

  • R701 PSY

       UP

[{"Business Unit":{"code":"BU048","label":"IBM Software"},"Product":{"code":"SSCPQ63","label":"APAR \/ Maintenance"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"7.0.1","Edition":"","Line of Business":{"code":"","label":""}}]

Document Information

Modified date:
16 January 2012