IBM Support

IT33794: NullPointerException when using a JSON format CCDT that containssecurity exit information with no userdata

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

  • A JSON format client channel definition table (CCDT) has been
    created that contains the following entry:
    
    {
      "channel":
      [
        {
        "exits":
          {
            "security":
            {
              "name": "securityName",
            }
          },
          "general":
          {
            "description": "SYSTEM.DEF.SVRCONN"
          },
          "name": "SYSTEM.DEF.SVRCONN",
          "clientConnection":
          {
            "connection":
            [
              {
                "host": "localhost",
                "port": 1414
              }
            ],
            "queueManager": "QM1"
          },
          "type": "clientConnection"
        }
      ]
    }
    
    A JMS connection factory has been configured to use this CCDT
    when creating connections to QM1.
    
    When an IBM MQ 9.2 classes for JMS application looks up the
    connection factory, and calls the method
    ConnectionFactory.createContext(int), the following
    NullPointerException occurs:
    
    java.lang.NullPointerException
    at
    com.ibm.mq.jmqi.system.internal.ExitsAttributes.setAttributes(JS
    ONCCDTFileParser.java:732)
    at
    com.ibm.mq.jmqi.system.internal.ChannelDefinitionAttributes.proc
    essDefinition(JSONCCDTFileParser.java:330)
    at
    com.ibm.mq.jmqi.system.internal.ChannelDefinitionAttributes.proc
    essChannelDefinition(JSONCCDTFileParser.java:301)
    at
    com.ibm.mq.jmqi.system.internal.JSONCCDTFileParser.processJSONCh
    annelDefinition(JSONCCDTFileParser.java:177)
    at
    com.ibm.mq.jmqi.system.internal.JSONCCDTFileParser.parse(JSONCCD
    TFileParser.java:98)
    at com.ibm.mq.jmqi.system.internal.CCDT.<init>(CCDT.java:112)
    at
    com.ibm.mq.jmqi.remote.impl.RemoteCCDT.<init>(RemoteCCDT.java:62
    )
    at
    com.ibm.mq.jmqi.remote.api.RemoteFAP.getCcdt(RemoteFAP.java:486)
    .........
    at
    com.ibm.msg.client.wmq.internal.WMQConnection.<init>(WMQConnecti
    on.java:383)
    at
    com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createV7Pr
    oviderConnection(WMQConnectionFactory.java:8475)
    at
    com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createProv
    iderConnection(WMQConnectionFactory.java:7815)
    at
    com.ibm.msg.client.jms.admin.JmsConnectionFactoryImpl._createCon
    nection(JmsConnectionFactoryImpl.java:322)
    at
    com.ibm.msg.client.jms.admin.JmsConnectionFactoryImpl.createCont
    ext(JmsConnectionFactoryImpl.java:543)
    .........
    

Local fix

  • Ensure that userData is provided in the security section.
    

Problem summary

  • ****************************************************************
    USERS AFFECTED:
    This issue affects users of the IBM MQ classes for JMS, who have
    applications that use connection factories that have been
    configured to use a JSON format client channel definition table
    (CCDT), where the CCDT contains a channel definition entry that
    includes a security exit.
    
    
    Platforms affected:
    MultiPlatform
    
    ****************************************************************
    PROBLEM DESCRIPTION:
    When parsing a JSON format client channel definition table
    (CCDT), the MQ classes for JMS expected that the security exit
    information for channel definitions would always be in the
    following format:
    
    "security":
    {
      "name": "securityName",
      "userdata": "data"
    }
    
    However, the "userdata" parameter was not required. This meant
    that it was valid for the security exit information to look like
    this:
    
    "security":
    {
      "name": "securityName",
    }
    
    If the "userdata" parameter was not included, then the MQ
    classes for JMS would generate a NullPointerException when it
    tried to parse the channel definition in the JSON format CCDT.
    The stack trace of the NullPointerException is shown below:
    
    java.lang.NullPointerException
    at
    com.ibm.mq.jmqi.system.internal.ExitsAttributes.setAttributes(JS
    ONCCDTFileParser.java:732)
    at
    com.ibm.mq.jmqi.system.internal.ChannelDefinitionAttributes.proc
    essDefinition(JSONCCDTFileParser.java:330)
    at
    com.ibm.mq.jmqi.system.internal.ChannelDefinitionAttributes.proc
    essChannelDefinition(JSONCCDTFileParser.java:301)
    at
    com.ibm.mq.jmqi.system.internal.JSONCCDTFileParser.processJSONCh
    annelDefinition(JSONCCDTFileParser.java:177)
    at
    com.ibm.mq.jmqi.system.internal.JSONCCDTFileParser.parse(JSONCCD
    TFileParser.java:98)
    at com.ibm.mq.jmqi.system.internal.CCDT.<init>(CCDT.java:112)
    at
    com.ibm.mq.jmqi.remote.impl.RemoteCCDT.<init>(RemoteCCDT.java:62
    )
    at
    com.ibm.mq.jmqi.remote.api.RemoteFAP.getCcdt(RemoteFAP.java:486)
    .........
    at
    com.ibm.msg.client.wmq.internal.WMQConnection.<init>(WMQConnecti
    on.java:383)
    at
    com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createV7Pr
    oviderConnection(WMQConnectionFactory.java:8475)
    at
    com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createProv
    iderConnection(WMQConnectionFactory.java:7815)
    at
    com.ibm.msg.client.jms.admin.JmsConnectionFactoryImpl._createCon
    nection(JmsConnectionFactoryImpl.java:322)
    at
    com.ibm.msg.client.jms.admin.JmsConnectionFactoryImpl.createCont
    ext(JmsConnectionFactoryImpl.java:543)
    .........
    

Problem conclusion

  • The IBM MQ classes for JMS have been updated so that if if they
    are processing channel definitions in a JSON format CCDT which
    include information about a security exit and do not specify the
    "userdata" parameter, then the security exit will be invoked
    with no user data being passed in. This prevents the
    NullPointerException from occurring.
    
    ---------------------------------------------------------------
    The fix is targeted for delivery in the following PTFs:
    
    Version    Maintenance Level
    v9.2 LTS   9.2.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

    IT33794

  • 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

    2020-08-05

  • Closed date

    2020-09-18

  • Last modified date

    2020-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

    MQ BASE V9.2

  • Fixed component ID

    5724H7281

Applicable component levels

[{"Line of Business":{"code":"LOB45","label":"Automation"},"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Product":{"code":"SSYHRD","label":"IBM MQ"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"920"}]

Document Information

Modified date:
25 March 2021