I am having a real heck of an issue here. I am sending TextMessages from a Java app (using Spring JMS) to a CICS client (MQ-only). The messages appear garbled on the CICS side (I have no control over that side; I can only see message traces in the log).
I have come to realize that I must set targetClient to 1 (MQJMS_CLIENT_NONJMS_MQ) to get MQ to take off the header. The problem, which I can deduce from examining the message in BMC's JMS viewer, is that the header is still there, as there are properties like mcd.Msd, mcd.Type, etc., visible in the properties tab.
(I am replicating the functionality of an existing app that does NOT have this problem. The legacy app does not use Spring JMS. I am trying to setup my connection & queue in identical manner.)
Here is the config for the QueueConnectionFactory and Queue:
<bean id="outboundJmsConnectionFactory" class="com.ibm.mq.jms.MQQueueConnectionFactory">
<property name="transportType">
<util:constant static-field="com.ibm.mq.jms.JMSC.MQJMS_TP_CLIENT_MQ_TCPI P"/>
</property>
<property name="hostName" value="${grs.mq.out.queue.host}"/>
<property name="port" value="${grs.mq.out.queue.port}"/>
<property name="queueManager" value="${grs.mq.out.queue.manager}"/>
<property name="channel" value="${grs.mq.out.queue.channel}"/>
</bean>
<bean id="jmsSenderQueue" class="com.ibm.mq.jms.MQQueue">
<property name="baseQueueManagerName" value="${grs.mq.out.queue.manager}"/>
<property name="baseQueueName" value="${grs.mq.out.queue.name}"/>
<property name="targetClient" value="1"/>
<property name="CCSID" value="${mq.ccsid}"/>
<property name="persistence" value="2"/>
</bean>
It seems that my targetClient must not be "taking" as it is still including that header. In fact, I have tried multiple methods of setting targetClient, but none do the job.
This is MQ v7.
Help greatly appreciated - time is very much of the essence here! Thanks.


Reply With Quote