Troubleshooting: Configuring WebSphere Commerce with WebSphere MQ

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

Problem

If an unrecoverable error is encountered by the Listener for WebSphere 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 WebSphere MQ.
  3. In the Time to Reconnect field to the time type the time in seconds that the Listener for WebSphere MQ takes to reconnect.
  4. Restart WebSphere Commerce.

Problem

After setting up WebSphere Commerce Developer to work with WebSphere 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\WebSphere MQ\Java\lib\mqjbnd05.dll: Can't find dependent libraries

The cause is the MQ_INSTALL_ROOT variable by default is pointing to the WebSphere 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 WebSphere 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 WebSphere 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

WebSphere 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 WebSphere MQ messages from being sent. Correcting the problem with your SMTP server resolves the issue and the WebSphere 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.