Troubleshooting: Configuring WebSphere Commerce with IBM MQ

This topic lists common problems and solutions when using IBM MQ.

Problem

If an unrecoverable error is encountered by the Listener for IBM MQ, the listeners automatically restart after a set period.

To change the time to reconnect value:
  1. Open the Configuration Manager
  2. Go to Commerce > Instance List > instance_name > Transports > Inbound > Listener for IBM MQ.
  3. In the Time to Reconnect field to the time type the time in seconds that the Listener for IBM MQ takes to reconnect.
  4. Restart WebSphere Commerce.

Problem

After setting up WebSphere Commerce Developer to work with IBM MQ, the following (or similar) exception is observed during server startup:

[2/21/06 9:55:03:848 CST] 52989e1b SystemErr R java.lang.UnsatisfiedLinkError: 
C:\WebSphere\IBM MQ\Java\lib\mqjbnd05.dll: Can't find dependent libraries

The cause is the MQ_INSTALL_ROOT variable by default is pointing to the IBM MQ client installation instead of the server installation.

  1. Open the WebSphere Application Server Administration Console
  2. Under Environment > Manage WebSphere Variables click MQ_INSTALL_ROOT.
  3. In the value field, specify the correct path to the IBM MQ server installation directory.
  4. Click OK to save your changes.
  5. Restart WebSphere Commerce Developer.

Problem

When sending a message to a back-end system with IBM MQ, unexpected characters show up in the front of the XML message. For example, from the WebSphere Commerce logs:

com.ibm.commerce.messaging.outboundservice.Messaging.sendReceiveImmediate() Message content is: Image showing invalid XML data

The default value is "JMS" when a JNDI entry is defined for an outbound queue. If the targetClient field is not changed to MQ, unexpected characters show at the beginning of the messages sent by WebSphere Commerce on these two queues.

  1. Open the WebSphere Application Server administrative console, for example: http://host_name:9090/admin
  2. Log in with your user ID.
    Note: The user ID does not require a password, and does not need to be a user ID of a user in the local user registry. It is only used to track user-specific changes to configuration data. Security is not enabled.
  3. Change the queue destination defined for the outbound queues named JMSOutboundQueue and JMSErrorQueue. Enter MQfor the targetClient field instead of JMS.

Problem

IBM MQ is not receiving any messages from WebSphere Commerce after a WebSphere Commerce Server restart.

If there are many messages in the MSGSTORE table that are waiting to be sent, the message backlog can hold up other messages from being sent. For example, if there is a connection problem to the SMTP server, this problem might cause email messages to build up. This backlog prevents other messages, such as IBM MQ messages from being sent. Correcting the problem with your SMTP server resolves the issue and the IBM MQ messages are sent.

Problem

When a two-phase commit (2PC) is configured incorrectly the following message is displayed:

[1/12/11 12:23:45:124 EST] 0000002a CommerceSrvr E com.ibm.commerce.messaging.listener.
   TransportAdapterSerialDispatcher process() CMN9907E: A resource exception occurred 
   during processing: "com.ibm.commerce.messaging.adapters.jca.exception.WcResourceException: 
   Messaging system cannot commit a JMS Session for QueueConnectionFactory null
. Error: javax.jms.IllegalStateException: Method not permitted in global transaction

To correct this problem, disable the two-phase commit for the queue connection factory.