2278 Errors

Reason code 2278—MQRC_CLIENT_CONN_ERROR—means the IBM MQ client could not use the client connection definition you gave it. The server might be fine and the network open, but the client-side story is inconsistent: CCDT row points at QM_OLD, Java code requests channel PAY.CHANNEL while the table only defines PAY.SVRCONN, SSL cipher in mqclient.ini disagrees with SVRCONN on the server, or Kubernetes mounted an empty ConfigMap where AMQCLCHF.tab should live. IBM support sees 2278 frequently with JMS and Spring applications after cloud migration when CCDT URL in properties still references file:///paths from on-prem workstations. This tutorial explains how client definitions layer with MQCONN, building and deploying CCDT from RUNMQSC, mqclient.ini and environment variables, diagnosing 2278 versus 2538 and 2059, HA and reconnect interactions, and standards for keeping client and server channel definitions synchronized through CI/CD.

Client Connection Definition Layers

  1. Application code: queue manager name, channel name, optional connection properties.
  2. mqclient.ini: QMGR, CHANNEL, CONNAME overrides, SSL stanza.
  3. CCDT binary table AMQCLCHF.tab: multiple channel definitions.
  4. Environment: MQCHLLIB, MQCHLTAB, MQSERVER connection string.

2278 often means two layers disagree—code passes CHANNEL(A) while CCDT default row is CHANNEL(B). Prefer one source of truth: either all CCDT or all explicit MQCONNX properties, documented per team.

2278 vs 2538 vs 2059
CodeFocusCheck first
2278Client definition mismatchCCDT and mqclient.ini
2538TCP host/portCONNAME and listener
2059Queue manager attachdspmq and QM name

Generating CCDT from Server

shell
1
2
3
4
5
6
7
8
9
DEFINE CHANNEL('APP.SVRCONN') CHLTYPE(SVRCONN) TRPTYPE(TCP) + CONNAME('mqhost.example.com(1414)') SSLCIPH(ANY_TLS12_OR_HIGHER) * Generate CCDT on server (command varies by version — see IBM docs): * runmqsc -n -c -x output AMQCLCHF.TAB * Client container: * ENV MQCHLLIB=/opt/mqm/ccdt * ENV MQCHLTAB=AMQCLCHF.TAB

Regenerate CCDT after every channel SSL or CONNAME change affecting clients. Store tab file in artifact repository with version label matching deployment. Never hand-edit binary CCDT.

MQSERVER Connection String

MQSERVER environment variable format encodes channel, transport, and CONNAME in one string—for example CHANNEL/TCP/CONNAME. Typo in MQSERVER causes 2278 at process start before main logic runs. Containers copying env from Helm values must validate in staging with mqconn sample or minimal Java main. Spring Boot ibm.mq.connName must align with same host and port as CCDT row if both present.

JMS and Connection Factory

JMS connection factory holds host, port, channel, queue manager, SSL suite. Mixing CCDT with explicit factory properties can confuse the provider—follow one pattern from IBM JMS client documentation. 2278 after first successful message may indicate reconnect path loading different property set; enable IBM client trace briefly to see which definition failed on second connect.

High Availability and CCDT

Multiple CCDT entries for cluster queue managers or standby hosts require client reconnect options to try alternates. Wrong failover order—dead host first—produces 2278 until timeout cycles. Test failover by pointing primary CONNAME at maintenance host deliberately in lab. Document which CCDT label maps to which datacenter for operations.

Troubleshooting Checklist

  • Print effective channel name and QM name from client debug at MQCONNX.
  • Verify MQCHLLIB/MQCHLTAB paths exist inside container filesystem.
  • Compare CCDT generation date to last channel ALTER date.
  • Match SSLCIPH and AUTHINFO between SVRCONN and client.
  • If 2538 also appears, fix TCP first then retest 2278.

Explainer: Wrong Map in GPS

2278 is GPS routing you to a bridge that was demolished—the roads work (network) but your map file (CCDT) is wrong for this trip.

Explain Like I'm Five: 2278 Errors

You have directions written on paper (CCDT) that do not match the real path to your friend's house, even though the friend is home.

Practice Exercises

Exercise 1

Write deployment checklist: server ALTER CHANNEL triggers CCDT regen and app redeploy.

Exercise 2

Compare using only MQSERVER versus only CCDT for one microservice—pros and cons.

Exercise 3

Diagnose scenario: 2278 only in Kubernetes, works on developer laptop—list four causes.

Frequently Asked Questions

Frequently Asked Questions

Test Your Knowledge

Test Your Knowledge

1. 2278 means:

  • CLIENT_CONN_ERROR
  • Q_FULL
  • UNKNOWN_OBJECT
  • NOT_AUTHORIZED

2. CCDT file is:

  • Client channel definition table
  • Archive log catalog
  • COBOL copybook
  • JCL procedure

3. MQCHLLIB points to:

  • Directory containing CCDT
  • Queue depth
  • Log path
  • DLQ name

4. 2278 fix often includes:

  • Regenerate CCDT from server DEF
  • Only ALTER MAXDEPTH
  • CLEAR DLQ
  • DELETE QMGR
Published
Read time21 min
AuthorMainframeMaster
Verified: IBM MQ 9.3 documentation