Client channel definition table

The client channel definition table (CCDT) determines the channel definitions and authentication information used by client applications to connect to the queue manager. On Multiplatforms, a CCDT is created automatically. You must then make it available to the client application.

The purpose of the client channel definition table (CCDT) is to determine the channel definitions used by client applications to connect to the queue manager. The channel definition also specifies the authentication information that applies to the connections.

The CCDT is a binary file. It is generated by a queue manager. The queue manager does not read the CCDT file.

[UNIX, Linux, Windows, IBM i]On Multiplatforms, the CCDT is created when the queue manager is created. The CCDT associated with a queue manager is kept in sync with the object definitions, therefore when you define, alter or delete a client channel object, both the queue manager object definition and the entry in the CCDT are updated as part of the same operation.
Notes:
  • The design of the IBM® MQ CCDT file, is that the CCDT file is shrunk, only after all client-connection channels defined by the user are actually defined. When a client-connection channel is deleted, it is just marked as deleted in the CCDT file, but it is not physically removed.
  • To force the CCDT file to shrink, after deleting one or more client-connection channels, issue the following command:
    rcrmqobj -m QM80 -t clchltab

You can use the CCDT to provide clients with the authentication information to check for TLS certificate revocation. Define a namelist containing authentication information objects and set the queue manager attribute SSLCRLNameList to the name of the namelist.

[UNIX, Linux, Windows, IBM i]

Default CCDT AMQCLCHL.TAB

On Multiplatforms, a default CCDT called AMQCLCHL.TAB is created when you create a queue manager.

By default, AMQCLCHL.TAB is located in the following directory on a server:
  • [IBM i]On IBM i, in the integrated file system:
    
     /QIBM/UserData/mqm/qmgrs/QUEUEMANAGERNAME/&ipcc
    
  • [UNIX][Linux]On UNIX and Linux® systems:
    
     /prefix/qmgrs/QUEUEMANAGERNAME/@ipcc
    
    The name of the directory referenced by QUEUEMANAGERNAME is case-sensitive on UNIX and Linux systems. The directory name might not be the same as the queue manager name, if the queue manager name has special characters in it.
  • [Windows]On Windows:
    
     MQ_INSTALLATION_PATH\data\qmgrs\QUEUEMANAGERNAME\@ipcc
    
MQ_INSTALLATION_PATH represents the high-level directory in which IBM MQ is installed.

However, you might have chosen to use a different directory for queue manager data. You can specify the parameter -md DataPath when you used the crtmqm command. If you do, AMQCLCHL.TAB is located in the @ipcc directory of the DataPath you specified.

The path to the CCDT can be changed by setting MQCHLLIB. If you do set MQCHLLIB, be aware, if you have multiple queue managers on the same server, they share the same CCDT location.

The CCDT is created when the queue manager is created. Each entry of a CCDT represents a client connection to a specific queue manager. A new entry is added when you define a client-connection channel using the DEFINE CHANNEL command, and the entry is updated when you alter the client-connection channels by using the ALTER CHANNEL command.

Locations for the client channel definition table

There are a number of ways for a client application to use a CCDT. The CCDT can be copied to the client computer. You can copy the CCDT to a location shared by more than one client. You can make the CCDT accessible to the client as a shared file, while it remains located on the server.

If you use FTP to copy the file, use the bin option to set binary mode; do not use the default ASCII mode. Whichever method you choose to make the CCDT available, the location must be secure to prevent unauthorized changes to the channels.

[V9.0.0.0 Jun 2016]From IBM MQ 9.0, the CCDT can be hosted in a central location that is accessible through a URI, removing the need to individually update the CCDT for each deployed client. IBM MQ 9.0 adds the capability for native (C/C++, COBOL and RPG) and unmanaged .NET applications to pull the CCDT from a URL, whether that be a local file, ftp or http resource.
Attention: IBM MQ supports retrieving a CCDT from a file, ftp, or http URL.
[V9.0.0.0 Jun 2016]The default caching behavior of IBM MQ clients is that a CCDT file is only pulled down if the file modification time is different from the last time that it was retrieved. As with most client configuration options, there are a variety of ways in which the URL location can be provided:
  • CCDTUrlPtr/CCDTUrlOffset via MQCNO structure being passed into MQCONNX MQI call
  • MQCCDTURL environment variable
  • ChannelDefinitionDirectory attribute in the Channels stanza of mqclient.ini
[V9.0.0.0 Jun 2016]Both authenticated and unauthenticated URLs are supported. Here are some examples:
export MQCCDTURL=ftp://myuser:password@myhost.sample.com//var/mqm/qmgrs/QMGR/@ipcc/AMQCLCHL.TAB
export MQCCDTURL=http://myhost.sample.com/var/mqm/qmgrs/QMGR/@ipcc/AMQCLCHL.TAB

[V9.0.0.0 Jun 2016]If you wanted to use this support with ftp or http, then that still means that you would need to host the CCDT file on a server, but with the support added at IBM MQ 9.0, all of your client applications could automatically pick up changes to channel definitions without manually pushing out updates or needing to mount a networked file system on each client. For more information, see Web addressable access to the client channel definition table.

How to use runmqsc to create a CCDT directly on a client machine

From IBM MQ 8.0, you can create a CCDT on the client machine directly by using the runmqsc command with the -n parameter. The CCDT is created in the location indicated by MQCHLLIB and with the filename indicated by MQCHLTAB which is AMQCLCHL.TAB by default.
Important: If you specify the -n parameter, you must not specify any other parameter.

Each entry of a CCDT represents a client connection to a specific queue manager. A new entry is added when you define a client-connection channel using the DEFINE CHANNEL command, and the entry is updated when you alter the client-connection channels by using the ALTER CHANNEL command.

How to specify the location of the CCDT on the client

On a client system, you can specify the location of the CCDT in the following ways:
  • Using the environment variables MQCHLLIB to specify the directory where the table is located, and MQCHLTAB to specify the file name of the table.
  • Using the client configuration file. In the CHANNELS stanza, use the attributes ChannelDefinitionDirectory to specify the directory where the table is located, and ChannelDefinitionFile to specify the file name.
  • [V9.0.0.0 Jun 2016]By providing a URL (file, ftp, or http) for a CCDT that is hosted in a central location (see Locations for the client channel definition table.
If the location is specified both in the client configuration file and by using environment variables, the environment variables take priority. You can use this feature to specify a standard location in the client configuration file and override it using environment variables when necessary.

[V9.0.0.0 Jun 2016]If you use a URL to provide the location of the CCDT, the order of precedence for a native client application to find the client channel definition is as described in Web addressable access to the client channel definition table.